0

私はjqueryにかなり慣れていないので、ご容赦ください。現在、一連のフォーム要素をループして、特定の要素を選択して何かをしようとしています。私はいくつかの問題に直面していますが、これを理解することはできません。以下のコードはすべてのフォーム要素をループし、郵便番号の ID を持つ入力フィールドをターゲットにして、特別な郵便番号検証を実行しようとしています。ただし、最初に郵便番号の検証にヒットし (3 番目の入力要素であっても)、それを検証してから、他のすべてのフォーム要素を通過し、郵便番号をもう一度検証します。a)郵便番号の検証が2回ヒットし、b)郵便番号が検証された最初の入力要素ではなく、3番目になるのを防ぐにはどうすればよいですか。

$("#homeForm :input").each(function(){

    if($("#zipCode").val().length == 0){
    //do some zip code validation
    } 

    if($(this).val().length == 0 && $(this).is(":visible")){             
    //do some regular validation
    }       

});

私のhtmlはここにあります:

<form id="homeForm>
   <input type="text" name="fullName" id="fullName" />
   <input type="text" name="homePhone" id="homePhone" />
   <input type="text" name="zipCode" id="zipCode" />
   <input type="text" name="age" id="age" />
   <input type="text" name="homeTown" id="homeTown" />
</form>

ここの初心者であり、どんな助けも大歓迎です。

4

1 に答える 1

2
$("#homeForm input").each(function(){
    if (!this.value.length) {
        if (this.id == 'zipCode') {
            //do some zip code validation
        }else if ( $(this).is(":visible") ) {
            //do some regular validation
        }       
    }
});

これにより、次のことが防止されます。

a) 郵便番号の検証が 2 回ヒットし、

b) 検証された最初の入力要素ではなく、代わりに 3 番目の郵便番号。

もちろん、何も入力されていない場合、つまり要素の値に長さがない場合 (長さがゼロかどうかをチェックしている場合) にのみ検証を行うことは理解しています。入力があるときにおそらく検証を実行したいので、その機能?

于 2013-05-12T00:21:18.023 に答える