jquery自定义筛选器不起作用

时间:2012-05-25 08:01:44

标签: javascript jquery

过滤器本身非常简单:

$.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,并以7989开头。但是:

$(":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>​]

我很绝望

2 个答案:

答案 0 :(得分:2)

因为在jQuery中“有效”了它的保留过滤器名称。使用“validPhone”或其他名称而不是“有效”。

答案 1 :(得分:0)

由于a是一个dom元素,你应该写

a.value.replace(/\D/g,''),

$(a).val().replace(/\D/g,''),