• ベストアンサー

テキストボックスに「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; }

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

  • ベストアンサー
回答No.3

まず原因を考えましょう。 これは、比較演算子 == の処理ですが、 右辺が数値の為、左辺の属性が自動変換されているのです。 故に if(code == 0){ で真となる code の値は、 "0", "00", "000", "0000", "00000"、それと ""(長さ0の文字列)の全てです。 (code の値が入力チェックの為に文字列であるという前提での話です。属性が不定の場合は、false, undefined, null, NaN, 0 も 真となります。) で、「alert("入力してください。");」により察するに 必須入力のチェックと思われますので 対応方法は、 if(code == ""){ と、0 を "" に書き換えるのが良いかと。 (if(code.length == 0){ でも同じですが・・・) 参考までに。

love_sen
質問者

お礼

if(code == ""){ としたらできました♪ どうもありがとうございました。

その他の回答 (3)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.4

Javascriptって正規表現が使えましたよね? だったら \d\d\d\d\d とすればいいような気がします。

参考URL:
http://himajin.moo.jp/javascript/match.html,http://www5a.biglobe.ne.jp/~n_rieko/javascript/15.htm
love_sen
質問者

お礼

ご回答ありがとうございました。 code.match(/\d\d\d\d\d/) としたのですが、エラーになってしまいうまく行きませんでした。。。

回答No.2

最初にシングルクォーテーションを入れるとか? 「’」←この記号です。 「'00000」と入れればどうです?

love_sen
質問者

お礼

ご回答ありがとうございます。 エラーになってしまいうまくいきませんでした。。。

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

クウォーテーションで括ってもダメですか? if(code == '00000'){ alert("入力してください。"); return false; } とか。

love_sen
質問者

お礼

ご回答ありがとうございます。 クウォートを使って以下のようにしたら、チェックに引っかかりませんでした。 面倒なことしてますか?? if(code == "00000"){ }else if(code == 0){ alert("入力してください。"); return false; }

関連するQ&A