2016-10-25 55 views
0

フォーム上のさまざまな入力要素と選択要素に検証エラーを出力しようとしています。しかし、私はクラス/属性セレクタを使用して要素を取得することはできません。 私はすべての入力を識別するためにブートストラップからフォームcontorlクラスを使用し、選択ボックスを修正するためにselect2プラグインを使用します。'name'属性タグを使用する複数のselect2要素のjQueryセレクタ

これは、標準の入力ボックスと選択ボックスでうまく動作しますが、name属性の最後に '[]'が必要なマルチプル選択ボックスでは、失敗して空のjqueryオブジェクトを返します。

編集:Btw eKeyは、[]を除いてgenresを返します。

HTML

<select id="genre-select" class="form-control select2-hidden-accessible" multiple="" name="genres[]" tabindex="-1" aria-hidden="true"> 
    <option value="1">RPG</option> 
    <option value="2">FPS</option> 
    <option value="3">MMO</option> 
</select> 

JS

$.each(errors, function (eKey, messages){ 

    var $input = $('.form-control[name=' + eKey + ']'); 
    //do stuff with error messages (bootstrap popovers) 
}); 

私はjQueryのセレクタを介して入力要素を選択することができますどのように任意のアイデア?

答えて

0

あなたは属性を使用することができますは、jQueryのバージョンでセレクタ

var eKey = "genres"; 
 
var $input = $('.form-control[name^=' + eKey + ']'); 
 
console.log($input[0].name);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="genre-select" class="form-control select2-hidden-accessible" multiple="" name="genres[]" tabindex="-1" aria-hidden="true"> 
 
    <option value="1">RPG</option> 
 
    <option value="2">FPS</option> 
 
    <option value="3">MMO</option> 
 
</select>

または脱出セレクタ文字列

var eKey = "genres\\[\\]"; 
 
var $input = $('.form-control[name=' + eKey + ']'); 
 
console.log($input[0].name);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="genre-select" class="form-control select2-hidden-accessible" multiple="" name="genres[]" tabindex="-1" aria-hidden="true"> 
 
    <option value="1">RPG</option> 
 
    <option value="2">FPS</option> 
 
    <option value="3">MMO</option> 
 
</select>

で始まる3+

var eKey = $.escapeSelector("genres[]"); 
 
var $input = $('.form-control[name=' + eKey + ']'); 
 
console.log($input[0].name);
<script src="https://code.jquery.com/jquery-3.0.0.js"></script> 
 
<select id="genre-select" class="form-control select2-hidden-accessible" multiple="" name="genres[]" tabindex="-1" aria-hidden="true"> 
 
    <option value="1">RPG</option> 
 
    <option value="2">FPS</option> 
 
    <option value="3">MMO</option> 
 
</select>

も参照してくださいWhy can't jQuery 3 identify the '#' character in an attribute selector?

+0

うわー返事、多くのオプション、ありがとう。私は前にこれらのオプションのどれかを試していない。開始チェックボックスは最良の解決策であると思われます。なぜなら、チェックごとに 'eKey'を変更するのは難しいからです。 – Orbitall

関連する問題