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

Javascript 测试字段值是否为数字且不为空,javascript,html,Javascript,Html,可能重复: 所以我想检查一个表单字段是否为空,并允许它只有正数,没有空格或字母。到目前为止,我完成了第一部分,用以下代码检查字段是否为空: function validate(form) { var elements = form.elements; if (form.qty.value == "") { alert("Please enter the field"); document.forms[0].qty.focus()

可能重复:

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

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;
}
在形式的某个地方:

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

if (Number(form.qty.value) > 0) {
    // Only executes if value is a positive number.
}
请注意,如果该值为空字符串,则该语句不会返回true。这同样适用于
null
NaN
(显然)和
未定义的
。数字的字符串表示形式将转换为数字对应形式。

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

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

if(mystr.match(/^\d+$/))
{
    //
}
如果您需要第一个符号不是
0
,则应编写
/^(0 |[^1-9]\d*)/

阅读regexp文档以了解此模式。

尝试使用
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;
}

检查以下答案:

在你的情况下,我会做以下工作:

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

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

  • 表达式
    +form.qty.value
    将字符串强制为数字。如果字符串为空或不是数字,它将表示
    NaN
  • 如果
    n
    是一个数字(
    +n==n
    ),且大于或等于零(
    n>=0
    ),则函数
    isPositive
    仅返回正值

  • 不适用于以下字符串:
    “1e5”
    ,也不适用于浮点值。(
    “123456”/“123.456”
    )aw。。。在这种情况下,其他答案会更好。非常感谢,我在js方面并不是新手,这是我想要的工作!不适用于以下字符串:
    “1e5”
    ,或使用逗号作为分隔符的浮点值。(
    “123456”
    )这似乎不适用于浮点值。另外,我建议您解释一下按位操作的工作原理(如传递参数时的
    +
    。@Cerbrus-加号运算符(
    +
    )不是按位运算符。它用于强制原始值(布尔值、字符串或数字)函数
    isPositive
    期望
    n
    是一个数字。表达式
    +n===n
    仅在
    n
    是一个数字而不是
    NaN
    时返回
    true
    。如果
    n
    是一个数字,则该表达式在浮动时计算为
    true
    ,因此除非OP愿意为需要1.5个数量的客户分割产品…@MrCod他说的是“正数”。他没有具体说明他需要一个整数。也许他是按重量卖东西,他没有具体说明。在任何情况下,如果他想要的话,你总是可以加上像
    number%1==0;
    这样的东西。然而,如果是这样的话,他就必须这么说。