4

2 つの非表示の入力フィールドがあります。

<input type="hidden" name="institut" id="institut" value="blablub" />
<input type="hidden" name="institut[0]" id="institut[0]" value="moreblablub" />

私はこのデバッグコードを持っています:

console.log("#institut: " + $("#institut").val());
console.log("#institut[0]: " + $("#institut[0]").val());

そして、私はこのコンソール出力を取得します:

#institut: blablub
#institut[0]: undefined

バックスラッシュで角括弧をエスケープしようとしましたが、何も変わりませんでした。複雑な ID を取得する方法はありますか?

4

3 に答える 3

8

IDに英数字以外の文字を使用しないでください。

しかし、あなたがそうするなら、あなたはすることができます:

var element = document.getElementById("institut[0]");
var $element = $(element);

デモ: http: //jsfiddle.net/maniator/sWnJN/

または

var $element = $("#institut\\[0\\]");

デモ: http: //jsfiddle.net/maniator/sWnJN/1/

あるいは:

var $element = $("[id='institut[0]']");

デモ: http: //jsfiddle.net/maniator/sWnJN/2/

于 2012-08-20T13:22:14.637 に答える
2

角かっこをエスケープする必要があります。

$( '#institut\\[0\\]' ).val()

ライブデモ: http: //jsfiddle.net/Qsagn/

角かっこはCSSの特殊文字であり、属性セレクターを定義します。角かっこを二重にエスケープする必要があります。文字は文字列リテラルの特殊文字であるため、 1回のエスケープ\[では不十分です。したがって、文字をエスケープして、リテラル文字として解釈されるようにする必要があります。\\\\

于 2012-08-20T13:21:57.457 に答える
1

いつでも使用できますdocument.getElementsByName("institut[0]")[0].value

于 2012-08-20T13:21:13.917 に答える