JavaScript - isNaN的反义词是什么?

时间:2014-01-11 22:01:01

标签: javascript forms validation

我是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。

谢谢!

3 个答案:

答案 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来检查值是否为数字。如果您的值是字符串类型,则可能需要在此之前调用parseIntparseFloat

例如let isNumber = Number.isFinite(parseInt(my_form_input.value));

旧浏览器的polyfill是

Number.isFinite = Number.isFinite || function(value) {
  return typeof value === 'number' && isFinite(value);
}