Jquery 无法获取属性的值';匹配';:对象为null或未定义

Jquery 无法获取属性的值';匹配';:对象为null或未定义,jquery,regex,validation,Jquery,Regex,Validation,当下面的函数工作时,我得到“无法获取属性'match'的值:对象为null或未定义”。有趣的是,它在另一个页面上工作得非常好。有什么想法吗 function valPoBox(sender, args) { var hasPObox = /^[P|p]*(OST|ost)*\.*\s*[O|o|0]*(ffice|FFICE)*\.*\s*[B|b][O|o|0][X|x]\s*(\d.)*/gi; var StreetAddress = $('.streetaddress').

当下面的函数工作时,我得到“无法获取属性'match'的值:对象为null或未定义”。有趣的是,它在另一个页面上工作得非常好。有什么想法吗

function valPoBox(sender, args) {
    var hasPObox = /^[P|p]*(OST|ost)*\.*\s*[O|o|0]*(ffice|FFICE)*\.*\s*[B|b][O|o|0][X|x]\s*(\d.)*/gi;
    var StreetAddress = $('.streetaddress').val();

    if (StreetAddress.match(hasPObox)) {
        args.IsValid = false;

        sender.ErrorMessage = "Address must not contain P.O. Box";
        $('.valPoBox').attr("ErrorMessage", sender.ErrorMessage);
    }
    else {
        args.IsValid = true;
    }

}

所有字符串都有一个
match
方法,因此您处理的对象不能是字符串。
.val()
方法只返回两种不同的内容:当找到元素时返回字符串,当找不到元素时返回未定义的
。记住这一点,
$('.streetaddress')
必须返回0个元素。修改选择器,使其以正确的元素为目标来解决问题。

最有可能的是
$('.streetaddress')。val()
由于找不到任何元素而返回未定义。用
console.log($('.streetaddress').val())
console.log($('.streetaddress').length)
确定它。谢谢凯文!