- ベストアンサー
00から59を入力されたかチェックしたい
テキスト入力フォームで、半角の00から59以外を入力したらエラーとしたいのですが、全角の数字を入力すると エラーになりません。 eval()以降のalert()が表示されないのが原因のようですが、どうすれば良いかわかりません。 function checkTime(hour, time){ wk_hour = eval(wk_hour); wk_time = eval(time); alert(wk_hour); alert(wk_time); // 0~24、0~59以外を入力したらエラーとしたい if (wk_hour < 0 || wk_hour > 23 || wk_time < 0 || wk_time > 59) { return false; } }
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
後で wk_hour, wk_time を利用しなければならないですよね。 その点、先の回答は少しピントが外れていましたね。 AOK さん作の全角→半角置換関数 z2h_digit() を利用させていただき、 wk_hour = parseInt(z2h_digit(wk_hour), 10); wk_time = parseInt(z2h_digit(wk_time), 10); とすれば、全角数字が入力されてもちゃんと数値として wk_hour, wk_time が使えると思います。 parseInt() の第二引数に基数10を指定しないと、 "0" で始まる数字が8進数として解釈されてしまいます。
その他の回答 (2)
- nightowl
- ベストアンサー率44% (490/1101)
eval() では全角の文字列が数値にならないのではないかと思います。 どうせ全角をチェックしなければならないのなら、いっそ時・分を表す文字列を変換せず、 正規表現マッチさせてもいいのではないでしょうか。 // 「24時」はダメなんですよね? if (wk_hour.match(/^([0101]?[\d0-9]|[22][0-30-3])$/) == null /* \d = [0-9] */ || wk_time.match(/^([0-50-5][\d0-9]?|[6-96-9])$/) == null) { return false; }
- rara_sun
- ベストアンサー率50% (271/539)
お礼
parseIntすごく便利ですね。知りませんでした。 Javascriptでも結構な事ができるんですね。 ありがとうございます。