Jestem boleśnie nowy w jQuery i muszę chwycić wartość na zmianie pola wprowadzania tekstu z identyfikatorem id[2][t] i wyświetla ten tekst w div, aby być stylem później (również w stylu jQuery).

Jest to kod skrzynki wejściowej:

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

To jest div próbuję go wyświetlić w:

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

To właśnie próbowałem, między innymi bez sukcesu:

$(document).ready(function() {

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

});

Wiem, że wsporniki są problemem, ale muszą pozostać z innych powodów.

Jakieś pomysły?

14
Rob 1 grudzień 2011, 00:00

6 odpowiedzi

Najlepsza odpowiedź

Masz val i text do tyłu. Zamień ich:

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

val służy do uzyskania wartości pola tekstowego. text Aby ustawić tekst w div.

Możesz dodatkowo uprościć kod za pomocą this zamiast ponownie zapytać element.

$('#id\\[2\\]\\[t\\]').change(function() {
  var txtval = this.value;
  $("#textpreview").text(txtval);
});
-1
James Montagne 29 styczeń 2013, 21:04
$( document.getElementById( "id[2][t]" ) ).change( function(){
  $( "#textpreview" ).text( this.value );
} );
10
Esailija 30 listopad 2011, 20:35

Możesz rozważyć rewizję swoich identyfikatorów (choć zgaduję, że mogą być automatycznie wygenerowane). Według To pytanie Twoje identyfikatory są nieprawidłowe przeciwko specyfikacji

4
Community 23 maj 2017, 10:33

Zamiast tego użyj selektora atrybutu:

var sel = $("[id='id[2][t]']");
sel.change(function() {
  $("#textpreview").val(sel.text());
});
0
Teddy 30 listopad 2011, 20:03

Zwykły stary 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));
}

Ahhh ... teraz nie czuje się lepiej?

0
Ryan Kinal 1 grudzień 2011, 17:06

Możesz spróbować użyć selektora atrybutu zamiast selektora identyfikatora.

$('[id="id[2][t]"]')
-4
Rocket Hazmat 30 listopad 2011, 20:03