Javascript验证问题?

Javascript验证问题?,javascript,function,validation,Javascript,Function,Validation,我编写了一个函数来验证必须输入电话号码的表单。我想让它做的是,如果输入了一个数字,它会确保该数字的格式正确,这意味着该字段不是强制性的。我遇到的问题是,如果字段为空(这是可以接受的),它仍然会发出警告消息“这不是正确的电话号码格式”,而如果字段为空,则它应该根本不验证该字段。以下是我正在使用的代码: function validateHome() { var num2 = document.getElementById('homeno').value; if (num2 !==

我编写了一个函数来验证必须输入电话号码的表单。我想让它做的是,如果输入了一个数字,它会确保该数字的格式正确,这意味着该字段不是强制性的。我遇到的问题是,如果字段为空(这是可以接受的),它仍然会发出警告消息“这不是正确的电话号码格式”,而如果字段为空,则它应该根本不验证该字段。以下是我正在使用的代码:

function validateHome() {
    var num2 = document.getElementById('homeno').value;

    if (num2 !== "" && !num2.match(/\(\d{2}\)\d{8}/)) {
        alert('That is not correct telephone number format');
        return false;
    }
    return true;
}

有人能帮我指出我的错误吗?

如果(num2==“”| |!num2.match(/\(\d{2}\)\d{8}/)?

如果(num2==“”| |!num2.match(/\(\d{2}\)\d{8}/)num2的值可能是空的,它不应该是

更好的方法可能是:

if(num2&&!num2.match(/\(\d{2}\)\d{8}/)


这将检查num2是否已实际定义且不是空的。

如果num2为空,则其值可能未定义

更好的方法可能是:

if(num2&&!num2.match(/\(\d{2}\)\d{8}/)


这将检查num2是否已实际定义且不是空的。

当它发出警报但不应该发出警报时,
num2的值是多少?如果还需要修改htmlhelpful@MattBall我只是让场地空着。我希望它只验证字段是否有条目,允许将字段留空,在这种情况下,函数当然不应该验证它。是的,我理解这一点,但这并不能回答我的问题。尝试
console.log(num2)
或使用断点查看
num2!==“
当您认为它应该是
假的时候,检查是
真的
@MattBall
=将在这里工作<代码>==
是类型和值比较中的显式(完全等于)。如果该值未定义,则不会出现这种情况。Undefined将等同于falsy值,但并不完全等同于空字符串。这就是为什么
if(num2)
if(num2!=“”)
都应该工作的原因当它发出警报但不应该时
num2
的值是什么helpful@MattBall我只是让场地空着。我希望它只验证字段是否有条目,允许将字段留空,在这种情况下,函数当然不应该验证它。是的,我理解这一点,但这并不能回答我的问题。尝试
console.log(num2)
或使用断点查看
num2!==“
当您认为它应该是
假的时候,检查是
真的
@MattBall
=将在这里工作<代码>==
是类型和值比较中的显式(完全等于)。如果该值未定义,则不会出现这种情况。Undefined将等同于falsy值,但并不完全等同于空字符串。这就是为什么
if(num2)
if(num2!=“”)
都应该起作用的原因不,它不应该起作用。只有当字段非空且与正则表达式不匹配时,才会发生警报。只需更改为
num2!=“”
或者正如Ed所说的那样,
num2
,它只是检查
num2
truthy
(同样的事情)不,它不应该。只有当字段非空且与正则表达式不匹配时,才会发生警报。只需更改为
num2!=“”
或正如Ed所说的那样,
num2
,它只是检查
num2
是否是
truthy
(同样的事情)