4

入力フィールドを検証したい。ユーザーは、10 桁以上の電話番号を入力する必要があります。

したがって、不正な文字をチェックする必要があります。入力が整数かどうかをチェックするだけでもいいでしょう。

私はこれを思いつきましたが、うまくいきません (n は文字列になります)。

function isInt(n){
    return typeof n== 'number' && n%1==0;
}

何か案は?

4

5 に答える 5

12

次のようなテストを実行できます。

input.length >= 10 && /^[0-9]+$/.test(input)

文字列に数字以外の文字が含まれている場合、または文字列の長さが10文字未満の場合は、失敗します。

于 2011-01-14T14:12:26.547 に答える
3

これはうまくいくはずです((input - 0)自動的に値を数値に変換しようとします):

function isInt(input){
   return ((input - 0) == input && input % 1==0);
}

この問題についてはすでに SO-question があります: Validate decimal numbers in JavaScript - IsNumeric()

于 2011-01-14T14:21:16.193 に答える
1

あなたにとってはやり過ぎかもしれませんが、Googleはそれほど前に電話検証用のライブラリを発表していません。JavaとJavascriptのバリアントが利用可能です。

于 2011-01-14T14:12:38.190 に答える
1

電話番号の検証は、入力が整数かどうかを確認するよりも少し複雑です。例として、電話番号はゼロで始まる可能性があり、実際にゼロで始まるため、技術的には int ではありません。また、ユーザーはダッシュを入力することもできます: 例:

00 34 922-123-456

したがって、検証に関しては、いくつかのオプションがあります。

  • 正規表現を使用して検証します。以下をご覧ください。

    http://regexlib.com/

    このサイトには何百もの例があります

  • ループを使用して、各文字を順番にチェックします。つまり、文字は int または dash です。

後者はユーザーからの一貫した入力に依存するため、前者をお勧めします。

于 2011-01-14T14:38:35.890 に答える
0

使用しない理由:

return (+val === ~~val && null !== val);

関数の戻り値として?

これはJavaScriptコンソールの出力です

> +"foobar" === ~~"foobar"
  false
> +1.6 === ~~1.6
  false
> +'-1' === ~~'-1'
  true
> +'-1.56' === ~~'-1.56'
  false
> +1 === ~~1
  true
> +-1 === ~~-1
  true
> +null === ~~null // this is why we need the "&& null !== val" in our return call
  true 
于 2014-04-19T10:24:27.653 に答える