jQuery Regex Check on field工作但警报消息不会改变

时间:2017-04-24 13:10:43

标签: javascript jquery regex

我有这个功能来验证邮政编码(英国):

/* validate Post Code */
$.fn.validatePostCode = function(postcode)
{
    regex = /^[A-Za-z]{1,2}\d{1,2}\s*\d{1}[A-Za-z]{2}$/i;

    if (!regex.test(postcode)) {
        return false;
    }
};

正如您所看到的那样,它只是一个简单的正则表达式,用于检查某些点上字符类型的数量。

要触发它(或者至少在我使用它的部分),我使用:

$(document).ready(function()
{
    $('#nextBtn').on('click', function()
    {
        var postcode = $('#postcode').val();
        console.log(postcode);

        if (!$.fn.validatePostCode(postcode)) {
            alert('hi');
        } else {
            alert('not valid');
        }
    });
});

执行console.log是这样我可以看到每个检查的邮政编码的价值,我可以看到它更新。但是,在更改输入后,我知道它应该是错误的仍然警告('hi')而不是无效。我甚至在我的验证功能中添加了一个console.log,并显示邮政编码何时无效,那么为什么警报信息不会改变每次点击?

我用它来验证我的正则表达式:http://www.regextester.com/它说当我输入各种邮政编码时我的模式还可以,所以我现在有点迷失了,有什么想法吗?

由于

1 个答案:

答案 0 :(得分:0)

好的,所以我很快找到了解决方案 - 因为我的功能在失败之前没有返回值。需要在if语句之外添加return true;

希望这可以帮助任何有类似问题的人:)