2

今日の問題はかなり単純かもしれません。テキストのないフォーム内のすべての必要な要素を取得しようとしています (タイプは入力、テキストです)。これが私のJSです:

var inputs = $('#form').find(':input');
if(inputs.filter('[required] [value=""]').first().focus().length)
//do something

これは HTML の要素です。

<input type="text" name="title[]" id="name_" required />

この入力要素は JavaScript によって動的に追加されていることを付け加えておきます。つまり、特定のアクションが実行された後に追加されます。

真の問題は、指定されたテキスト フィールドに値を入力しなくても、if ステートメント内のコードが真にならないことです。

どんな助けでも大歓迎です。

4

3 に答える 3

5

input タグの属性は、input 要素valueのプロパティと同じではありません。value最初のものはたまたま HTML にあり、DOM で解析され、defaultValue. 後者は、現在入力されている入力を表す動的な値です。.prop() と .attr()も参照してください

要素には属性さえないためvalue、セレクターと一致することはありません。代わりに、プロパティをチェックするフィルター関数を使用する必要があります。

inputs.filter(function() {
     return this.required && this.value=="";
     // equivalent: $(this).prop("required")
     // and         $(this).prop("value") or $(this).val()
})
于 2013-06-25T00:03:20.643 に答える
3

空の必須入力を選択するつもりなら、セレクターが間違っています。スペースは祖先の関係、親子を表します:

if (inputs.filter('[required][value=""]').length) { // Element is `required` and empty
    ....
}
于 2013-06-25T00:03:11.350 に答える
0

コードには2 つの問題があります。

('[required] [value=""]')

察するに

('[required][value=""]')

そして、上記のセレクターでは、下の入力を選択することはできません

<input type="text" name="title[]" id="name_" />

そもそも値属性がないためです。また、必要な属性がありません

セレクターに一致する入力は、この署名のものになります

<input type="text" required="true" value="" name="title[]" id="name_" />

フィドルをチェック

于 2013-06-25T00:02:36.403 に答える