Как ссылаться на id с скобками в jQuery

я болезненно новичок в jQuery, и мне нужно захватить значение при изменении текстового поля ввода с идентификатором id[2][t] и отобразить этот текст в div для последующего стиля (также в стиле jQuery).

это код коробки ввода:

<input id="id[2][t]" name="id[2][t]" maxlength="20" type="text">

Это div, который я пытаюсь отобразить в:

<div id="textpreview"></div>

это то, что я пробовал, среди других вариантов без успеха:

$(document).ready(function() {

$('#id[2][t]').change(function() {
  var txtval = $('#id[2][t]').text();
  $("#textpreview").val(txtval);
});

});

Я знаю, что скобки являются проблемой, но они должны остаются по другим причинам.

какие идеи?

6 ответов


вы val и text назад. Поменять их местами:

$('#id\[2\]\[t\]').change(function() {
  var txtval = $('#id\[2\]\[t\]').val();
  $("#textpreview").text(txtval);
});

val используется для получения значения текстового поля. text чтобы установить текст в div.

вы можете еще больше упростить код, используя this вместо повторного запроса элемента.

$('#id\[2\]\[t\]').change(function() {
  var txtval = this.value;
  $("#textpreview").text(txtval);
});

$( document.getElementById( "id[2][t]" ) ).change( function(){
  $( "#textpreview" ).text( this.value );
} );

вы можете рассмотреть возможность пересмотра ваших идентификаторов (хотя я предполагаю, что они могут быть автоматически сгенерированы). Согласно этот вопрос ваши идентификаторы недействительны против спецификации


вместо этого используйте селектор атрибутов:

var sel = $("[id='id[2][t]']");
sel.change(function() {
  $("#textpreview").val(sel.text());
});

Обычный Старый JavaScript-Код:

var elem = document.getElementById('id[2][t]');

elem.onchange = function()
{
    var elem = document.getElementById('textpreview');
    elem.removeChild(elem.firstChild)
    elem.appendChild(document.createTextNode(this.value));
}

Аааа... разве это не лучше?


вы можете попробовать использовать селектор атрибутов вместо селектора id.

$('[id="id[2][t]"]')