0

重複の可能性:
文字列が有効な数値であるかどうかを確認する(組み込みの)方法はJavaScriptにありますか?

HTMLの入力検索バーがあります

<form class="form-inline" action="javascript:displayResult()">          
    <input id="searchKey" >
    <button onclick="result()" type="button" class="btn btn-warning btn ">
          Go
    </button>                   
</form>

これはJavascript関数です

function result() {     
    search($('#searchKey').val());    

    if(typeof(searchKey)=="number") { // checking if this is a number
       someFunction();
    }
};

問題は、検索バーのエントリごとに、検索バーの「hello」または9789であっても、値を文字列として取得することです。以前alert(typeof(searchKey));は確認していましたが、常にタイプを文字列として返します

検索バーで数字と文字列を区別しようとしています。これを行うためのより良い方法があると確信していますが、なぜこれが機能しないのかわかりません。

テキストと数値を動的に区別する必要があるため、parseInt()を使用できません

4

3 に答える 3

5

aの値<input type="text">は常に文字列です。ただし、を使用して数値として解析することはできますparseIntNaN文字列から数値を解析できない場合は、結果になります。有効な操作ではないisNaNため、これを使用する必要があることを忘れないでください。myNumber === NaN

さらに良いことisNaN(+searchKey)に、単項オペランドがを呼び出すので、を使用しますToNumber。ただし、これは空白を無視します。

9.3.1文字列型に適用されるToNumber

文字列に適用されるToNumberは、次の文法を入力文字列に適用します。文法が文字列をStringNumericLiteralの展開として解釈できない場合、ToNumberの結果はNaNになります。

[実際のルールについては、http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdfを参照してください]


11.4.6単項+演算子

単項+演算子は、そのオペランドを数値型に変換します。プロダクションUnaryExpression:+ UnaryExpressionは、次のように評価されます。

  1. ExprをUnaryExpressionの評価結果とします。
  2. ToNumber(GetValue(expr))を返します。
于 2012-08-04T08:26:59.910 に答える
3

テキスト入力フィールドには常にstring値が含まれます。if (!isNaN(searchKey))数値をテストしてみてください。または、正規表現を使用することもできます。/^\d+$/.test(searchKey)

于 2012-08-04T08:27:41.533 に答える
3

使用する

if(!isNaN(searchKey))

それ以外の

if(typeof(searchKey)=="number")
于 2012-08-04T08:27:41.517 に答える