jQuery ändert den Eingabetextwert


155

Ich kann nicht den richtigen Selektor finden für:

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

Ich möchte den Wert in = 000000 ändern. Ich brauche den Selektor, um den "Namen" zu finden, nicht die ID der Texteingabe.

Sollte das nicht funktionieren?:

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

Die vorgestellte Lösung funktioniert nicht. Was ist das Problem damit?

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

Die JSON-Daten funktionieren ordnungsgemäß. Die Idee ist, die JSON-Werte später an die Texteingabewerte des Formulars zu übergeben. Funktioniert aber nicht :(

Antworten:


307

Nein, Sie müssen etwas tun wie:

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

Sie sollten jedoch wirklich eindeutige IDs verwenden, wenn Sie können.

Sie können auch spezifischer werden, wie zum Beispiel:

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

BEARBEITEN:

Führen Sie dies aus, um Ihre Eingabe anhand des Namensattributs zu finden:

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

Ich werde diese Antwort akzeptieren. Können Sie ein gutes Buch / Tutorial (vorzugsweise ein Buch) über jquery empfehlen, in dem ich wirklich etwas über Selektoren lernen kann? vor allem Formularauswahl?
Joricam

7
Dies ist bei weitem das Beste im Internet: futurecolors.ru/jquery
Jason

@ Jason Der Link ist kaputt, wie lautet der Titel des Buches bitte?
Oyalhi

@oyalhi oh nein! Es tut mir Leid. Dieser Kommentar ist 5 Jahre alt, also haben sie ihn wohl abgeschafft :(
Jason

@ Jason Ja leider. Erinnerst du dich jedoch an den Titel des Buches?
Oyalhi

31

jQuery-Methode zum Ändern des Werts im Texteingabefeld ist:

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

Dadurch wird das Attribut valuefür das DOM-Element mit der ID #colorpickerField1von #EEEEEEbis geändert#000000


26

Best Practice ist die direkte Verwendung der Identifikation:

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


einfach und am besten :)
MRRaja

2
Warum funktioniert das, aber document.getElementById("#id").value = 'xxx';bei mir nicht? Der angezeigte Textwert wird nicht geändert, sondern nur die value-Eigenschaft des DOM-Elements.
user3494047

1
Sie verwenden bereits die ById-Methode, # steht für die CSS-Notation. Entfernen Sie es.
Scott Chu

9

Wenn Sie den neuen Wert des Elements festlegen, müssen Sie den Aufrufauslöser ändern.

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


Dies hat ein Problem für mich behoben, bei dem der Handler für Änderungsereignisse zweimal aufgerufen wurde. einmal mit dem neuen Wert und dann wieder mit [attr = val]
Peter Lenjo

3

Nur zu Jasons Antwort hinzugefügt, ist der .Selektor nur für Klassen. Wenn Sie etwas anderes als das Element, die ID oder die Klasse auswählen möchten, müssen Sie es in eckige Klammern setzen.

z.B

$('element[attr=val]')

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.