テキストボックスから整数値を取得し、それが NaN か null かなどを確認するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/793445

  •  16-09-2019
  •  | 
  •  

質問

JavaScript を介してテキストボックスから値を取得しています。テキストボックスが空の場合は、戻り値が返されます。 NaN. 。null、空などの場合は空の文字列を返したいと考えています。

どのようなチェックをすればいいのでしょうか? if(NAN = tb.value)?

役に立ちましたか?

解決

うーん、何か怪しいですね。

どのブラウザでは空のテキストボックスは NaN を返しますか?私はそのようなことが起こるのを見たことがありませんし、再現することもできません。

テキスト ボックスの値は実際には文字列です。空のテキスト ボックスは空の文字列を返します。

ああ、何かが NaN かどうかを確認するには、次を使用する必要があります。

if (isNaN(tb.value))
{
   ...
}

注記:の isNaN()-関数の戻り値 true 空の文字列を除き、数値として解析できないもの。これは、数値入力の優れたチェックであることを意味します (正規表現よりもはるかに簡単です)。

if (tb.value != "" && !isNaN(tb.value))
{
   // It's a number
   numValue = parseFloat(tb.value);
}

他のヒント

次の方法でも実行できます。

var number = +input.value;
if (input.value === "" || number != number)
{
    // not a number
}

NaN は、それ自体ではなく、無に等しいです。

文字列から数値への変換に + を使用したくない場合は、通常の parseInt を使用してください。ただし、常に基数を指定することを忘れないでください。

var number = parseInt(input.value, 10)

それ以外の場合、JavaScript はそれを 8 進数であると認識するため、「08」は 0 になります。

入力テキスト ボックスへの参照があると仮定します。

function getInteger(input) {
  if(!input || !input.value) return "";

  var val = parseInt(input.value, 10);

  if(isNaN(val)) return "";
  else return val;
}

できることの 1 つは、テキスト ボックスの値を正規表現チェックして、受け入れられる数値の形式に適合することを確認し、形式に適合する場合は処理を実行し、そうでない場合は空の文字列を返すことです。

編集:これは、私の目の前にあるコードの例です (最適な正規表現ではない可能性があります)。

var anum=/(^\d+$)/;

if (!anum.test(document.getElementById("<%=txtConceptOrderValue.ClientID %>").value))
{
    alert("Order Value must be a valid integer");
    document.getElementById("<%=txtConceptOrderValue.ClientID %>").focus();
    return false;
}

編集2:また、私は ASP.NET を使用しているため、テキストボックスにアクセスする方法が少し変わっていることにも注意してください。通常の JavaScript の場合は、それほど乱雑ではないかもしれません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top