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);" />...

但现在我只想允许数字以及检查该字段是否为空。我找到了一些脚本,但我不知道如何将代码合并到一个有效的脚本中。

4

4 回答 4

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

请注意,如果该值为空字符串,则该语句将不会返回 true。null, NaN(显然)和 也是如此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 === n) 且大于或等于零 ( n >= 0) 时返回正数。
于 2012-12-12T11:50:17.487 回答