2017-01-24 6 views
0

複数の選択ボックスと複数の入力があり、名前のような配列を持つフォームがあります。 だから私は名前のpersonroom []で複数の選択ボックスを持っています。私はこれを使用してこれらを取得したいと考えています。querySelectorAllは名前の入った選択ボックスを選択しません。

var personroom=document.querySelectorAll("input[name='personsroom[]']"); 

      alert(personroom.length) 

それは私にnull( "0")を与えます。しかし、同じ方法ですべての入力(テキスト)フィールドを選択することができます。奇妙な。誰でも助けてくれますか?

+0

HTMLを表示してください。 "選択ボックス"を取得しようとすると、なぜ 'querySelectorAll'の呼び出しで' input'を使用していますか? –

+0

http://stackoverflow.com/questions/13987979/how-to-properly-escape-attribute-values-in-css-js-attribute-selector-attr-valueの重複 –

答えて

2

問題は、セレクタの正確なターゲットに関連しているようでした。 元セレクタ"input[name='personsroom[]']"は動作しますが、inputドロップOPのコメントに応じなかった[]文字のエスケープに"[name='personsroom[]']"

ノートを働きました。この特定のケースでは、それがこの"input[name=personsroom[]]"を使用"[name='personsroom[]']"

►インライン単一引用符を使用したクエリ文字列として問題ではありませんでした、単一引用符で、あなたはこの"input[name=personsroom\\[\\]]"

// The below will fail with "Uncaught SyntaxError..." during execution 
 
//var personroom = document.querySelectorAll("[name=personsroom[]]"); 
 

 
//The below works as we are escaping the special characters 
 
var personroom = document.querySelectorAll("[name=personsroom\\[\\]]"); 
 
console.log("1.) personroom.length", personroom.length); 
 

 
//Also, when using inline quotes, you do not need to escape any characters 
 
var personroom = document.querySelectorAll("[name='personsroom[]']"); 
 
console.log("2.) personroom.length", personroom.length);
<input type='textbox' name='personsroom[]' /> 
 
<input type='textbox' name='personsroom[]' /> 
 
<input type='textbox' name='personsroom[]' /> 
 
<input type='textbox' name='personsroom[]' />
よう []をエスケープする必要があります

+0

私はそれを行いました。結果はありません –

+0

@AzerQurbanovちょうどコード例でそれを更新しました。別のマークアップをお持ちの場合は、質問に追加してください。おそらくそれは関係ありますか? – Nope

+0

私はそれが選択タグで動作するようにする必要があります –

0

選択ボックスを使用している場合は、<select></select>を使用していますか?お問い合わせのinputからselectに変更:

var personroom=document.querySelectorAll("select[name='personsroom[]']"); 

     alert(personroom.length) 
+0

これは選択しません。私は他の入力タグを持っています。それは正しく動作する –

関連する問題