1

簡単な質問になりますが、私にとってはそうではありません:)。

私はこのコードを調べていました:

<!DOCTYPE html>
<html>
<body>

<h1>My First JavaScript</h1>

<p>Please input a number.</p>

<input id="demo" type="text">

<script>
function myFunction()
{
var x=document.getElementById("demo").value;
if(x==""||isNaN(x)) /*?*/
    {
    alert("Not Numeric");
    }
}
</script>

<button type="button" onclick="myFunction()">Click Me!</button>

</body>
</html> 

次のような出力が得られます

これ

ここでコードでは、チェックすることにより、値が入力されていないかどうかをチェックしていますif(x==""||isNaN(x))。しかし、テキストボックス内にスペース文字を入力すると、チェックに失敗します。それをチェックする方法は何ですか?

PS:私はクロムを使用しています。そして、trim()は機能しませんでした。

4

6 に答える 6

1

正規表現を試してみてください

function myFunction(){
    var x=document.getElementById("demo").value;
    if(!(/^\d+$/.test(x))) {
        alert("Not Numeric");
    }
}

デモ:フィドル

于 2013-03-14T13:36:03.030 に答える
1

jqueryを使用できる場合は、jQueryからのトリムが便利です。

$ .trim('任意の値');

または、JavaScriptのみを使用する場合は、trim関数を使用して空白を無視します。新しいブラウザはトリムをサポートしていますが。ブラウザの互換性の問題を克服するために、別の関数を作成することをお勧めします。

関数を作成する

function trim(this)
{
return this.replace(/^\s+|\s+$/g, '');
};

次に、切り取ったコードでコードを次のように変更します

var x=trim(document.getElementById("demo").value);
于 2013-03-14T13:37:48.297 に答える
0

番号かどうかを確認する前に、電話をかけることをおtrim勧めします。コンテンツの左右のスペースがある場合は、それを削除します。xtrim

var x=document.getElementById("demo").value;
x = x.trim();

一部の古いブラウザではトリムを使用できないことに注意してください。それらをサポートする必要がある場合は、自分で実装するか、のようなライブラリ関数を使用できますjQuery.trim

これを使用することもできます:

if(isNaN(parseInt(x)))

(xが整数であると想定しています。)

于 2013-03-14T13:35:09.470 に答える
0

入力文字列をトリミングします

var x=document.getElementById("demo").value.trim();
于 2013-03-14T13:35:53.900 に答える
0

新しいブラウザはstring.trim機能をサポートしています。より広い範囲をカバーするために、正規表現を使用してスペースを削除し、結果の長さを確認できます。ゼロより大きい場合は、をテストしNaNます。

トリミングする1つの方法は次のとおりです。

function trim(stringToTrim) {
    return stringToTrim.replace(/^\s+|\s+$/g,"");
}

テスト:

var myString = " hello my name is ";
alert("*"+trim(myString)+"*");

この種のアプローチは、Mozillaの専門家によって提案されています。

于 2013-03-14T13:38:28.817 に答える
0

トリムまたは正規表現の使用を避けたい場合は、parseFloatコマンドを使用できます。これを実装するには、を使用します。これは、xがスペースまたは数値以外の場合parseFloat(x)に返されます。NaN

于 2013-03-14T13:42:03.667 に答える