フィルター自体は非常に簡単です。
$.expr[':'].valid = function(a) {
var phone = a.value.replace(/\D/g,''),
phonesub = phone.substr(0, 2);
return (phonesub == '79' || phonesub == '89') && phone.length == 11
}
長さが11で、またはphone
で始まるかどうかを確認したいだけです。でも: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>]
私は絶望的です