jQuery modifica il valore del testo di input


155

Non riesco a trovare il selettore giusto per:

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

Voglio cambiare il valore in = 000000. Ho bisogno del selettore per trovare il "nome" e non l'id dell'input di testo.

Non dovrebbe funzionare ?:

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

La soluzione presentata non funziona, qual è il problema con questo?

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

I dati JSON funzionano correttamente; l'idea è di in seguito passare i valori JSON nei valori di testo di input del modulo. Ma non funziona :(

Risposte:


308

no, devi fare qualcosa del tipo:

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

ma dovresti davvero usare ID univoci se puoi.

Puoi anche ottenere più specifici, come:

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

MODIFICARE:

fai questo per trovare il tuo input in base all'attributo name:

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

Accetterò questo tendalino, puoi consigliarmi un buon libro / tutorial (preferibilmente un libro) su jquery dove posso davvero conoscere i selettori? in particolare i selettori di forma?
Joricam,

7
questa è di gran lunga la cosa migliore su Internet: futurecolors.ru/jquery
Jason,

@Jason Il link è interrotto, qual è il titolo del libro per favore?
Oyalhi,

@oyalhi oh no! Mi dispiace. quel commento ha 5 anni, quindi immagino che lo abbiano rimosso :(
Jason

@Jason Sì, sfortunatamente. Tuttavia, ti ricordi il titolo del libro?
oyalhi,

31

Il modo jQuery per modificare il valore nel campo di inserimento del testo è:

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

questo cambierà l'attributo valueper l'elemento DOM con ID #colorpickerField1da #EEEEEEa#000000


26

Le migliori pratiche utilizzano direttamente l'identificazione:

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


semplice e migliore :)
MRRaja

2
Perché questo funziona ma document.getElementById("#id").value = 'xxx';non funziona per me? Non cambia il valore del testo visualizzato, ma solo la proprietà value dell'elemento DOM.
user3494047,

1
Si utilizza già il metodo ById, # è per la notazione CSS. Rimuoverla.
Scott Chu,

9

Quando si imposta il nuovo valore di element, è necessario modificare il trigger di chiamata.

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


Ciò risolveva un problema per me in cui il gestore dell'evento change veniva chiamato due volte; una volta con il nuovo valore e poi di nuovo con [attr = val]
Peter Lenjo il

3

Aggiungendo alla risposta di Jason, il .selettore è solo per le classi. Se si desidera selezionare qualcosa di diverso dall'elemento, dall'ID o dalla classe, è necessario racchiuderlo tra parentesi quadre.

per esempio

$('element[attr=val]')

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.