测试字段值是否为数字且不为空

时间:2012-12-12 11:42:03

标签: javascript html

  

可能重复:
  Validate that a string is a positive integer

所以我想检查一个表单字段,如果它是空的,并允许它只有正数字,没有空格或字母。到目前为止,我成功完成了第一部分,使用以下代码检查字段是否为空:

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 个答案:

答案 0 :(得分:12)

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

请注意,如果值为空字符串,则语句不会返回true。 nullNaN(显然)和undefined也是如此。数字的字符串表示形式将转换为数字对应物。

答案 1 :(得分:2)

您可以使用regexp
你的模式是^\d+$

^ - 开始行 $ - 行的结尾
\d - 数字
+ - 1次或更多次

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

如果你需要第一个不是0的符号,你应该写/^(0|[^1-9]\d*)/
阅读regexp文档以了解这种模式。

答案 2 :(得分:0)

尝试使用search()函数和RegExp。像这样:

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;
}

答案 3 :(得分: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仅返回正数。 / LI>