2012-05-25 170 views
2

過濾器本身是很容易的: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>​] 

,我渴望

回答

2

因爲「有效」它在jQuery中保留了過濾器名稱。使用「validPhone」或其他名稱而不是「有效」。

+0

Muchos gracies,Arturka :)這就是答案。 – Nemoden

0

由於a是一個DOM元素,你應該寫

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

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

是的,'價值()'是我的代碼中的錯字(更新了問題)。但是,不能正常工作。 – Nemoden

相關問題