我是JavaScript的新手,并试图运行一个简单的脚本,如果它不正确地完成(如果条目不是数字),我的字段会给我的字段一个红色边框,但是如果该字段,则将边框颜色变为绿色然后正确完成,但无法提交表单,因为填写的字段不正确。
到目前为止,我已经设法通过使用以下方法为文本字段执行此操作:
function validateForm()
{
var x=document.forms["myForm"]["FN"].value;
if (x==null || x=="")
{
alert("First name must be completed");
document.forms["myForm"]["FN"].style.border="1px solid red";
return false;
}
else (x!==null || x!=="")
{
document.forms["myForm"]["FN"].style.border="1px solid green";
}
但我现在正在尝试做同样的事情,但将字段限制为仅接受数字。到目前为止我所拥有的是:
var x=document.forms["myForm"]["mobile"].value;
if (isNaN(x) || x==null || x=="")
{
alert("Contact number must be completed with numbers only");
document.forms["myForm"]["mobile"].style.border="1px solid red";
return false;
}
else (x!==null || x!=="" || // need to write here is not isNaN !isNaN//)
{
document.forms["myForm"]["SN"].style.border="1px solid green";
}
这限制了fie; ld只允许数字,但一旦表格框边框变为红色,一旦验证完成后它就不会变成绿色。
关于如何编写的任何帮助/提示都不是isNaN,或者任何解决方法都会受到赞赏。
请尽量保持简单,因为我是网页设计的完整初学者。的JavaScript。
谢谢!
答案 0 :(得分:5)
isNaN(num)
的字面对面是!isNaN(num)
。但是,这并不总是验证某些内容是数字的。要检查某些内容是否为数字,请使用jQuery的$.isNumeric(num)
或此
function isNumeric(num) {
return !isNaN(parseFloat(num)) && isFinite(num);
}
答案 1 :(得分:1)
如果您的代码真的如下所示:
else (x>=0 || x!==null || x!=="")
{
document.forms["myForm"]["SN"].style.border="1px solid green";
}
那么你的问题实际上与isNaN
无关。从语法上讲,您的else
子句仅适用于带括号的测试表达式。当if
子句为false
时,将评估该表达式。但是,它对任何事都没有影响;价值将被抛弃。边框变为绿色的后续块语句将始终执行;它与if - else
语句无关。
JavaScript中else
子句的语法不涉及像if
子句那样的测试条件。在else
之后应该发表声明。在您的情况下,该“语句”是带括号的测试表达式,虽然无用是JavaScript中完全有效的语句。
答案 2 :(得分:0)
由于 ECMAScript 2015 使用Number.isFinite
来检查值是否为数字。如果您的值是字符串类型,则可能需要在此之前调用parseInt
或parseFloat
。
例如let isNumber = Number.isFinite(parseInt(my_form_input.value));
旧浏览器的polyfill是
Number.isFinite = Number.isFinite || function(value) {
return typeof value === 'number' && isFinite(value);
}