2

フィルター自体は非常に簡単です。

$.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で始まるかどうかを確認したいだけです。でも: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>​]

私は絶望的です

4

2 に答える 2

2

jQueryで予約されているフィルター名が「有効」であるため。「valid」の代わりに「validPhone」または他の名前を使用してください。

于 2012-05-25T08:53:33.547 に答える
0

はdom要素なのでa、書くべきです

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

また

$(a).val().replace(/\D/g,''),
于 2012-05-25T08:21:46.410 に答える