7

簡単に言うと、電話フィールドを検証しようとしていました。フィールドでをチェックするためにisNaNとを追加しましたが、それは言いましたparseInt" "

以下は真であると検証されることはありません..何が欠けていますか?

if(isNaN(parseInt(phone))){
        error.text("Sorry but this phone field requires numbers only");
        return false;
    } else {
    return true;

    }

それは常に失敗します...フィールドに数字を入力して送信しても、trueとは読み取れません。私はいつもエラーメッセージを受け取ります。

編集:フォームからの入力値をテストしphoneています。フィールドの名前です。

4

4 に答える 4

14

JS 文字列を数値に変換するさまざまな方法とその結果:

上記の手法を使用してさまざまな文字列を変換した結果
(ソース: phrogz.net )

入力するのが短いので個人的に使用*1しますが、(単項 + とは異なり)目立ち、ユーザーが入力したものを返すか、完全に失敗します。最後に無視する数値以外のコンテンツがあることがわかっている場合、または base-10 以外の文字列を解析する必要があるparseInt()場合にのみ使用します。

編集:あなたのコメントに基づいて、それをphone.val()修正した場合

  1. あなたはjQueryを使用していました(あなたが言及したことはなく、使用する必要があります)、および
  2. 実際には、1 つ以上の DOM 要素 (おそらく 1 つだけ) をラップする jQuery オブジェクトがありました。

その場合var foo = $('…');foo変数は 1 つ以上の要素の jQuery オブジェクトを参照します。var fooEl = foo[0];orを介してこれから最初の実際の DOM 要素を取得できますが、var fooEl = foo.get(0);それでもDOM要素があり、その特定のプロパティはありません。

フォーム入力の場合.value、DOM 要素から を取得する必要があります。これは、jQuery.val()メソッドが行うことです。

于 2012-04-17T02:45:52.303 に答える
10

parseInt時々少し奇妙です:

> parseInt("123-456-789")
123

幸いなことに、おそらく次の方法でケースを解決できます。

> Number("123-456-789")
NaN
于 2012-04-17T02:43:32.097 に答える
9

parseInt は、最初の文字を数値に変換できない場合にのみ NaN を返します。

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt

于 2012-04-17T02:44:02.727 に答える