所以我想检查一个表单字段,如果它是空的,并允许它只有正数字,没有空格或字母。到目前为止,我成功完成了第一部分,使用以下代码检查字段是否为空:
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);" />
...
但是现在我想只允许数字以及检查字段是否为空。我找到了一些脚本,但我不知道如何将代码合并到一个有效的脚本中。
答案 0 :(得分:12)
if (Number(form.qty.value) > 0) {
// Only executes if value is a positive number.
}
请注意,如果值为空字符串,则语句不会返回true。 null
,NaN
(显然)和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;
}
<强>解释强>
+form.qty.value
将字符串强制转换为数字。如果字符串为空或不是数字,则表示NaN
。isPositive
是一个数字(n
)并且它大于或等于零(+n === n
),则函数n >= 0
仅返回正数。 / LI>
醇>