• 締切済み

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

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

みんなの回答

  • zzzzzz
  • ベストアンサー率61% (70/113)
回答No.1

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
質問者

お礼

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

関連するQ&A

  • 入力チェック

    お世話になります。 JavaScriptでの正規表現で入力チェックをしたいのですが、うまくいきません。 以下のようなことをするのにはどうしたらよいのでしょうか? ■小数点のある数字の入力チェック 整数の最大桁数:6桁 少数の最大桁数:2桁 とします。 例:フィールドに以下を入力した場合 120.50 → OK 10000000.1 → NG 整数の桁数がオーバー 150.1478 → NG 小数の桁数がオーバー

  • AUTOCADLT マルチテキストに入力した値の…

    お世話になります AUTOCADLT2016以降です マルチテキストを作り MSゴシック、右詰に、しつつ 小数点位下一桁で 値入力しました また、 此を垂直にコピーし 値を書き換えました そしたら、ですね 小数点位置が、合いません やはり フォントを変える 其の必要がある と、言う事 で、しょうか? 其れとも… ? お教えください

  • awkにおける値の切り上げ方法について

    awkにおいて、小数点以下を切り上げ、整数としたいのですが、 その方法を教えて下さい。 a=13.27 のとき、 小数点以下を切り上げた値14を bに代入したい。

  • オフセットの数値入力

    AutoCADLT2000の質問です。 わかりにくいかもしれませんが よろしくお願いしますm(_ _)m オフセットの値が整数÷2の場合は そのままの値でオフセットしてくれるのですが、 オフセットの値が小数点÷2の時に きちんとしたオフセットの値が出てくれません。 (その前に入力した値になります) 例) オフセット100/2=50 オフセット80.5/2=50 どこか小数点の設定ができるとこがあるのでしょうか?

  • 入力チェックについて

    体重を入力するテキストボックスがあります。 整数部分と小数部分は分けないので、 入力できる種類は半角数字とドットです。 整数部分は3桁まで、小数点以下は第一位までとする 入力チェックをつけたいのですが、 整数部分と小数点部分を別々にチェックするにはどのような命令を使用すればよいでしょうか。 (60, 60.1 , 105 などのパターンが考えられると思います。)

  • テキストフィールドに入力した値の移動

    JavaScriptで、以下のことを実行したいのですが 初歩的なところでつまずいていて困っております。 --- フォーム[form1]内に、テキストフィールド[t1],[t2]と、 ボタン[btn]があります。 [t1]に文字を入力し、[btn]をクリックすると [t1]の値が[t2]に移動する --- *フレームは使っておりません。 簡単と思っていたのですが、 JavaScriptの基礎がわかっていないため 応用がきかなく固い頭のため困っています。 どうか宜しくお願いいたします。

  • テキスト入力フォームの値を画面遷移なしで関数に渡す。

    <form>によるテキスト入力フォームに入力されている値を、javascript関数に渡したいと思います。 ページ遷移させずに渡す方法はありますでしょうか? onclickで関数を呼び出しても、ページが再読込されてしまいます。 <a href="javascript:xxxxxx">で関数を呼び出して、ページ遷移なしで、値を渡すことはできました。 これと同様の効果を、テキスト入力フォームでも行いたいと思っています。 お分かりの方がいらっしゃいましたら、お教え願いたいと思います。 よろしくお願い致します。

  • プログラミングの課題が出たのですが、全く分からなくて手のつけようがあり

    プログラミングの課題が出たのですが、全く分からなくて手のつけようがありません。 どなたか教えて頂けませんか? 以下問題のその課題です。 以下の問題に対応するJavascriptのプログラムを作成して、システムにアップロードしてください。 標準問題 1.円の面積 (1) prompt を用いて数値を入力し、alert を用いてその数値を半径とする 円の面積を表示するプログラムを作成せよ。 なお、円周率は Math.PI で得られる。(例えば、2πは 2 * Math.PI;) 2.繰り返し promptを用いて100以下の数値を入力し、1から順に整数をdocument.writelnなどで表示せよ。ただし、3の倍数と3のつく整数の場合に、文字が大きく表示(サイズ7など)されるように工夫せよ。 3.乱数 1 から 100 までの値(整数)を乱数で決定し、その値を document.write を用いて表示するプログラムを作成せよ。 なお、0以上、1未満の乱数は Math.random()、ある数 n の小数点を切り上げた整数は Math.ceil(n) で得られる。 4.数当てゲーム 1 から 100 までの値(整数)を乱数で決定し、その値を正解するまで prompt による数値の入力を繰り返すゲームを作成せよ。 入力した値が正解より大きい場合は「もっと小さい」、 正解より小さい場合は「もっと大きい」、 正解した場合は「正解です」と、それぞれ alert を用いて表示せよ。 当然、正解は表示してはいけない。

  • excelでの数値切り捨て、桁制限をひとつのセルで

    数字を入力した時に、切り捨てと同時に、桁数を揃えることは可能でしょうか 具体的には、 (入力) 12.34  →  012 整数が2桁あるので、小数点以下を切り捨て、頭に「0」をつけ3桁にする        1.23  →  1.2 整数が1桁なので、小数点以下第二位を切り捨て、3桁(3文字?)にする         0.12  →  .12 整数が「0」なので、小数点以下を3桁(3文字)を表示する となるようにしたいです。 入力規則で、[>9.99]0##;[>.99]#.#; と入れて試してみたのですが この場合、入力が「34.56」「3.45」等であると、切り捨てて欲しい部分を四捨五入してしまい (入力) 34.56 → 035   (034になってほしい)       3.45 → 3.5     (3.4になってほしい) となってしまいます。良い方法はあるでしょうか

  • 小数点以下の値を判断したいです

    DBから取得する値が3ならば3と、3.5なら3.5と取得したいです。 この時にint型で取得すると小数点以下が切られてしまいます。 double型で取得すると3.5は3.0となってしまいます。 どうしたらよいのでしょうか? 整数値であればintで小数値を含むならばdoubleで取得するようなロジックにしようかと思っているのですが、小数点以下の値を判別させる方法はありますでしょうか?