javascript - jquery自定义过滤器不起作用

标签 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>​]

很明显,值是“”。

为什么我的过滤器不起作用?

顺便说一句,与此同时,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”。

关于javascript - jquery自定义过滤器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10750711/

相关文章:

javascript - ajax 请求在 IE 上不起作用

javascript - jQuery - getJSON 数据到数组

asp.net - 使用 jquery + jsonp,Internet Explorer 不保存 ASP.NET sessionID

javascript - Highcharts:使用类别时 x 轴不一致

javascript - 选择选项 onChange 仅更改一次

javascript - 邮政编码和城市列表,excel 方舟还是数据库?

JavaScript:修改句子

javascript - 如何将现有项目与jsconfig集成

jquery - 使文本完美地适合 div(高度和宽度),而不影响 div 的大小

javascript - 在 JavaScript 中,为什么 "0"等于 false,但是当通过 'if' 测试时,它本身不是 false?