过滤器本身非常简单:
$.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>]
很明显,价值是“”。
为什么我的过滤器不起作用?
&lt; BTW,与此同时,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>]
我很绝望
答案 0 :(得分:2)
因为在jQuery中“有效”了它的保留过滤器名称。使用“validPhone”或其他名称而不是“有效”。
答案 1 :(得分:0)
由于a
是一个dom元素,你应该写
a.value.replace(/\D/g,''),
或
$(a).val().replace(/\D/g,''),