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;
这样的东西。然而,如果是这样的话,他就必须这么说。