jQuery zmień wartość tekstu wejściowego

155

Nie mogę znaleźć odpowiedniego selektora dla:

<input maxlength="6" size="6" id="colorpickerField1" name="sitebg" value="#EEEEEE" type="text">

Chcę zmienić wartość na = 000000. Potrzebuję selektora, aby znaleźć „nazwę”, a nie identyfikator wprowadzania tekstu.

Czy to nie powinno działać ?:

$("text.sitebg").val("000000");

Przedstawione rozwiązanie nie działa, na czym polega problem?

$.getJSON("http://www.mysitehere.org/wp-content/themes/ctr-theme/update_genform.php",function(data) {
    $("#form1").append(data.sitebg);
    $('input.sitebg').val('000000');
});

Dane JSON działają poprawnie; chodzi o to, aby później przekazać wartości JSON do wartości tekstowych wejściowych formularza. Ale nie działa :(

Joricam
źródło

Odpowiedzi:

307

nie, musisz zrobić coś takiego:

$('input.sitebg').val('000000');

ale naprawdę powinieneś używać unikalnych identyfikatorów, jeśli możesz.

Możesz również uzyskać bardziej szczegółowe informacje, takie jak:

$('input[type=text].sitebg').val('000000');

EDYTOWAĆ:

zrób to, aby znaleźć swoje dane wejściowe na podstawie atrybutu nazwy:

$('input[name=sitebg]').val('000000');
Jason
źródło
Zaakceptuję ten awnser, czy możesz polecić dobrą książkę / tutorial (najlepiej książkę) o jquery, gdzie naprawdę mogę się dowiedzieć o selektorach? zwłaszcza selektory formularzy?
Joricam
7
to zdecydowanie najlepsza rzecz w internecie: futurecolors.ru/jquery
Jason
@Jason Link jest uszkodzony, jaki jest tytuł książki?
oyalhi
@oyalhi oh no! Przykro mi. ten komentarz ma 5 lat, więc chyba go usunęli :(
Jason
@Jason Tak, niestety. Pamiętasz jednak tytuł książki?
oyalhi,
31

Sposób zmiany wartości w polu tekstowym w jQuery to:

$('#colorpickerField1').attr('value', '#000000')

spowoduje to zmianę atrybutu valueelementu DOM o identyfikatorze #colorpickerField1od #EEEEEEdo#000000

Vladimir Kroz
źródło
26

Najlepszą praktyką jest bezpośrednie użycie identyfikatora:

$('#id').val('xxx');

MGE
źródło
prosty i najlepszy :)
MRRaja
2
Dlaczego to działa, ale document.getElementById("#id").value = 'xxx';nie działa dla mnie? Nie zmienia wyświetlanej wartości tekstowej, tylko właściwość value elementu DOM.
user3494047
1
Używasz już metody ById, # jest dla notacji css. Usunąć to.
Scott Chu
9

Kiedy ustawiasz nową wartość elementu, potrzebujesz zmiany wyzwalacza wywołania.

$('element').val(newValue).trigger('change');

Richelly Italo
źródło
To rozwiązało problem polegający na tym, że program obsługi zdarzenia zmiany był wywoływany dwukrotnie; raz z nową wartością, a potem znowu z [attr = val]
Peter Lenjo
3

Dodając do odpowiedzi Jasona, .selektor jest tylko dla klas. Jeśli chcesz wybrać coś innego niż element, identyfikator lub klasa, musisz umieścić to w nawiasach kwadratowych.

na przykład

$('element[attr=val]')

Robert Ingrum
źródło