OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

テキストに入力できる文字( 値 )を限定したいのですが・・・

  • すぐに回答を!
  • 質問No.247050
  • 閲覧数94
  • ありがとう数2
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 18% (10/53)

工数や金額の値を入力する目的で、
整数と小数のみを入力できるようにし、それ以外の文字は
不正文字として入力できないようにしたいと思っております。
また、".123"や"0..5"や"1.2.3"といった値も不正文字とみなしたい
です。不正文字が入力された場合は、アラートで注意をうながしたい
と思っています(再入力をうながす)。じつは、このサイトの
同じくJavaScriptの質問コーナーで4月1日18時台に、
「小数点以下第二位まで整数、小数ともに表示させたい」
という質問をさせていただき、皆様に助けていただいて解決したの
ですが、その「小数点以下第二位・・・」と同じ関数の中に、
不正文字は入力させない、というプログラムを組み込みたいと
考えています。
もしよろしければ、どなたか、お願い申し上げます。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全1件)

  • 回答No.1
レベル10

ベストアンサー率 61% (70/113)

Number()でできると思います。 Number(str)とすると、文字列strが数値に変換されます。 もしstrが数値として不適切な場合にはこの結果はNaN(Not a Number)という特別な数になりますので、 isNaN(Number(str)) で不正な入力かどうかを判定できます。例えば isNaN(Number("1")) == false isNaN(Num ...続きを読む
Number()でできると思います。
Number(str)とすると、文字列strが数値に変換されます。
もしstrが数値として不適切な場合にはこの結果はNaN(Not a Number)という特別な数になりますので、
isNaN(Number(str))
で不正な入力かどうかを判定できます。例えば
isNaN(Number("1")) == false
isNaN(Number("1.2")) == false
isNaN(Number("a")) == true
isNaN(Number("4.5t")) == true
などとなります。
ちなみにparseInt()、parseFloat()は"123a"等の途中まで数値として解釈できる文字列に対して甘いですので、この目的では使用できません。
また、".123"はこの方法では判定できません。これは通常では数値として正しいとされる表記だからです。
この手の数値を考慮する場合には、処理としては次の3通りが考えられます。
1.".5"と入力されたら自動的に"0.5"に変える。"a"等に対しては入力をクリアする
2.".5"と入力されたら自動的に"0.5"に変える。"a"等に対しては警告を表示する
3.".5"や"1e4"等の入力を許可しない

1は
function normalizeAsNumber(x) {
var tmp = Number(val);
return isNaN(tmp) ? "" : tmp.toString();
}
を使用すればできます。
2はreturn文の""の部分を(alert("警告"),"")に変更すればできます。
3は正規表現を使用するのが簡単です。
/^\d*$|^\d+\.\d+$/
という表現で"", "12", "34.22"等にマッチし、".5", "1.", "1e4"等にはマッチしませんので、
str = str.match(/^\d*$|^\d+\.\d+$/);
などとすればよいでしょう。(許可されない文字列の場合にはstr==nullとなります)
お礼コメント
sasatomo

お礼率 18% (10/53)

どうもありがとうございます!
これから実践に入りますが、
もしも今回のお答えに関して疑問が
でてしまったとしたら、
ご質問をさせていただくことがあるかと
思います。
そのときは、どうかよろしくお願い申し上げます。
投稿日時 - 2002-04-04 21:56:19


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ