- ベストアンサー
テキストボックスに「00000」を入力すると「0」になってしまう
あるテキストボックスには5桁の半角数字を入力させるようにしたいと思っています。 このテキストボックスには以下の入力チェックをかけていますが、「00000」を入力すると「0」と判断されてしまい。一つ目のチェックに引っかかってしまいます。 これを文字列として判断する方法はありますか? または、以下のチェックに引っかからない方法はありますか? よろしくお願いいたします。 (codeにはvalueが入っています。) if(code == 0){ alert("入力してください。"); return false; } if(isFinite(code) == false){ alert("半角数字を入力してください。"); return false; } if(code.length != 5){ alert("5桁入力してください。"); return false; }
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
まず原因を考えましょう。 これは、比較演算子 == の処理ですが、 右辺が数値の為、左辺の属性が自動変換されているのです。 故に if(code == 0){ で真となる code の値は、 "0", "00", "000", "0000", "00000"、それと ""(長さ0の文字列)の全てです。 (code の値が入力チェックの為に文字列であるという前提での話です。属性が不定の場合は、false, undefined, null, NaN, 0 も 真となります。) で、「alert("入力してください。");」により察するに 必須入力のチェックと思われますので 対応方法は、 if(code == ""){ と、0 を "" に書き換えるのが良いかと。 (if(code.length == 0){ でも同じですが・・・) 参考までに。
その他の回答 (3)
- moon_night
- ベストアンサー率32% (598/1831)
Javascriptって正規表現が使えましたよね? だったら \d\d\d\d\d とすればいいような気がします。
- 参考URL:
- http://himajin.moo.jp/javascript/match.html,http://www5a.biglobe.ne.jp/~n_rieko/javascript/15.htm
お礼
ご回答ありがとうございました。 code.match(/\d\d\d\d\d/) としたのですが、エラーになってしまいうまく行きませんでした。。。
- company939
- ベストアンサー率29% (79/272)
最初にシングルクォーテーションを入れるとか? 「’」←この記号です。 「'00000」と入れればどうです?
お礼
ご回答ありがとうございます。 エラーになってしまいうまくいきませんでした。。。
- moon_night
- ベストアンサー率32% (598/1831)
クウォーテーションで括ってもダメですか? if(code == '00000'){ alert("入力してください。"); return false; } とか。
お礼
ご回答ありがとうございます。 クウォートを使って以下のようにしたら、チェックに引っかかりませんでした。 面倒なことしてますか?? if(code == "00000"){ }else if(code == 0){ alert("入力してください。"); return false; }
お礼
if(code == ""){ としたらできました♪ どうもありがとうございました。