3

重複の可能性:
文字列が正の整数であることを検証します

そのため、フォームフィールドが空かどうかを確認し、正の数値のみを使用できるようにし、スペースや文字を使用しないようにします。これまでのところ、次のコードを使用して、フィールドが空であるかどうかを確認する最初の部分に成功しました。

function validate(form) {
    var elements = form.elements;

    if (form.qty.value == "") {
        alert("Please enter the field");
        document.forms[0].qty.focus()
        document.forms[0].qty.select()
        return false;
    }

    return true;
}

フォームのどこか:

<form action="addtocart.php" method ="post" onsubmit="return validate(this);" />..。

しかし、今は数字だけを許可し、フィールドが空かどうかを確認したいと思います。いくつかのスクリプトを見つけましたが、コードを1つの有効なスクリプトにマージする方法がわかりません。

4

4 に答える 4

12
if (Number(form.qty.value) > 0) {
    // Only executes if value is a positive number.
}

値が空の文字列の場合、ステートメントはtrueを返さないことに注意してください。同じことがnullNaN(明らかに)と。にも当てはまりundefinedます。数値の文字列表現は、対応する数値に変換されます。

于 2012-12-12T11:45:44.963 に答える
2

正規表現を使用できます。
パターンは^\d+$です。

^-行の開始
$-行の終わり
\d-数字
+-1回以上

if(mystr.match(/^\d+$/))
{
    //
}

最初のシンボルをそうでないようにする必要がある場合は、 このパターンを理解するために正規表現のドキュメントを読む必要があり0ます。/^(0|[^1-9]\d*)/

于 2012-12-12T11:46:45.540 に答える
0

search()関数と正規表現を試してください。このような:

if (form.qty.value.search(/^([0-9\.]+)$/)==-1)
{
alert ("Please enter the field");
document.forms[0].qty.focus()
document.forms[0].qty.select()
return false;
}
于 2012-12-12T11:48:54.197 に答える
0

次の回答を確認してください:https ://stackoverflow.com/a/10270826/783743

あなたの場合、私は次のことをします:

function validate(form) {
    return isPositive(+form.qty.value);
}

function isPositive(n) {
    return +n === n && n >= 0;
}

説明:

  1. +form.qty.valueは文字列を数値に強制します。文字列が空であるか数値でない場合は、を表しNaNます。
  2. この関数は、が数値()であり、ゼロ()以上であるisPositive場合にのみ正を返します。n+n === nn >= 0
于 2012-12-12T11:50:17.487 に答える