• ベストアンサー

入力チェックについて

今、Inputタグ内のデータに以下の条件があるため、その処理を考えています。 条件: 1.件数がマイナスと数字のみで入力される 2.件数は-999から999までの範囲以外の入力を受け付けない そこで、<INPUT type="text" maxlength="3" name="kensu" style="ime-mode:inactive">というテキストボックスを用意しました。 ここから、-999<=A<0の条件を考え、"-"キーが押された際のキーイベントでjavascriptを使い、maxlengthの値を変更できないかと考えました。 I.この方法は、まず無理なのでしょうか? Windowsアプリではプロパティの変更が可能だったので、できるのではないか?と情報を探してみましたが、webフォームでは、どうもできなさそうです。 II.キーイベントとして、INPUTタグの中にOnKeyDownを記述し、ネット上の例を参考にjavascriptで処理をしようと考えたのですが、"-"キーを取得してくれません。 document.フォーム名.onkeydown=e function mainuskey(e){ if(event.keyCord == 45) {window.alert('マイナスキーが押されました');} } どこがおかしいのかわかりません。このような記述についての参考URLがありましたらお教えいただけないでしょうか。 III.他の方法として、INPUTタグ内にOnBlurを記述し、フォーカスを失ってから、 内部の数値についての適合チェックを行うという方法も考えてみたのですが、 webフォームでこのような条件をチェックする際には、 通常、どのような方法を取るのがベターなのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

#2>この知識は、タグ辞典程度でも載っている常識なのでしょうか? タグ辞典には載っていないんじゃないでしょうか(私は知りませんけど) 大抵のアトリビュート(属性)には、それに該当するスクリプトでのプロパティがあります。 ただ、面倒なのは、大文字小文字が微妙に違っていたりして・ IE(を使っているみたいですね)なら http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/dhtml_reference_entry.asp をさんこうにされるのがよろしいかと思います。 ただIEは、標準を逸脱していることも多々あるので注意が必要です。 (上記リファレンスにも、標準に準拠していない部分に付いては、注記があります。) 標準的な部分については(以下はDOM) http://www.doraneko.org/misc/dom10/19981001/level-one-html.html#ID-011100101 (上記は、翻訳サイト)など、W3C(下記)などを参照してください。 http://www.w3.org/TR/ #2>onsubmitの時点でのチェックが一般的なのですね。 一般的かどうかは知りません。 キーが1つ入力される毎にチェックするのは、面倒ですよと言っているだけです。(入力時にチェックされているサイト様もあると思います)

kenton
質問者

お礼

BLUEPIXYさん、再び、回答をつけていただきありがとうございます。 参考URL、ありがとうございます。 正直、英語は苦手なので翻訳サイトから読み始めてみます。 結構、奥が深いものなんですね。 javascriptを組んで、変数の名称のうち間違いや、大文字小文字のミスで動かないということが結構あります。(^^;) 注意が足りないと言われればそれまでですが、 もっと良いエディタが無いかと模索中です。 >一般的かどうかは知りません。 書き方が悪くすいません。 作ってみましたが、やはりキーチェックを毎回やることを考えるよりは、簡単ですね。 ありがとうございました。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

I. maxlength の値はスクリプトから変更可能です。 スクリプトからは、maxLength でアクセスします。 II. III. キーイベント毎のチェックは、できると思いますが結構面倒なので、 onsubmit イベントなんかでチェックするようにしてはどうでしょう。 v = parseFloat(….kensu.value);//あるいは、parseInt で値を得てから if(v <-999 || 999 < v) で簡単にチェックできますし・

kenton
質問者

お礼

BLUEPIXYさん、こちらでも回答ありがとうございます。 Iの件、できました。 この知識は、タグ辞典程度でも載っている常識なのでしょうか? 見つけられなかったので、できないものと諦めかけていました。 II、IIIの件もこちらの方法で実現できました。 onsubmitの時点でのチェックが一般的なのですね。 今まではWindowアプリが中心であったためか、 いろいろなフローが考えられる中で、 領域が変わると、意外と使う側の考え方も変わることに戸惑っています。 まぁ、職種や発注先が変わると・・・という風にも言えますが。 最良な手段を探すとなると難しいものですね。

回答No.1

ここにキーコードについて書いてあります。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=143226
kenton
質問者

お礼

Programmerさん、ご回答ありがとうございます。 事前に探してみましたが、うまく探しきれていませんでした。 自分のやりたいことで、うまく検索用語を使わないとダメなんですね。 参考Page、大変助かりました。

関連するQ&A