アプリ版:「スタンプのみでお礼する」機能のリリースについて

JavaScriptの数値入力チェックに、isNaNを使用しない理由があれば、ご教授願います。

経緯は以下のとおりです。
数値項目に、"1-1","1-1-"等、数値とみなされない入力をされるとエラーになるという不具合が発生しています。
ソースの該当箇所を見たところ以下のようになっていました。
//if(isNaN(getInputValue(elem_name))){
if((getInputValue(elem_name)).match(/[^\-\.0-9]/g)){
わざわざisNaNをコメントして、"-",".",1~9 の入力のみを可能にしています。
修正した担当者は既にいないため、聞くことは出来ません。
対象ブラウザは、IE6, IE5.5, NN6.2 であるため、isNaNが使用できないことはありません。
isNaNの不具合か何かがあるのでしょうか?
# 0x10:16進が通っちゃうとか(通りませんでした)
# 2^2:指数表示が通っちゃうとか(通りませんでした)

A 回答 (1件)

すでに試されているようですが、16進数や指数表記での入力を禁止させたかったのだと思います。


NNはわかりませんが、Windows+IEでは16進数・指数などは数値として認識されるようですよ。

ちなみに、WindowsXP + WSHで試した結果は次のとおりです。

--------------------

var s;

s = "100";
WScript.Echo(isNaN(s)); //false(数値)

s = "-100.0";
WScript.Echo(isNaN(s)); //false(数値)

s = "0xA2";
WScript.Echo(isNaN(s)); //false(数値)

s = "2^2";
WScript.Echo(isNaN(s)); //true(数値ではない)

s = "AAA";
WScript.Echo(isNaN(s)); //true(数値ではない)

s = "1.25E+5";
WScript.Echo(isNaN(s)); //false(数値)

s = "12,345,678.123";
WScript.Echo(isNaN(s)); //true(数値ではない)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
IEでは、16進と指数表示は数値扱いですね。

# 後続の処理で範囲チェックが入っているので、
# 16進は数値以外と勘違いしてしまいました。
# isNaN==false で範囲外だと、「~は最小nまで入力可能です」
# とメッセージがでるようになっています。
# なぜか、0X1は1以下と判定されます^^;

お礼日時:2005/04/07 10:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!