过滤器本身非常简单:
$.expr[':'].valid = function(a) {
var phone = a.value.replace(/\D/g,''),
phonesub = phone.substr(0, 2);
return (phonesub == '79' || phonesub == '89') && phone.length == 11
}
我只想检查
phone
是否将我们的长度定为11,并且它以79
或89
开头。然而:$(":valid")
[<input type="text" id="phone1" name="phone1" value>]
显然,值是“”。
为什么我的过滤器不起作用?
顺便说一句,同时,DOM上还有另一个输入:
<input type="text" id="phone2" name="phone2" value="" disabled="">
并且没有被过滤器匹配。它受
disabled
影响吗?让我们改变它的价值:
$("#phone2")
[<input type="text" id="phone2" name="phone2" value disabled>]
$("#phone2").val("79111111111")
[<input type="text" id="phone2" name="phone2" value disabled>]
$("#phone2").val()
"79111111111"
$(":valid")
[<input type="text" id="phone1" name="phone1" value>]
我很绝望
最佳答案
因为在jQuery中“有效”其保留的过滤器名称。使用“ validPhone”或其他名称代替“ valid”。