jQuery alterar o valor do texto de entrada

155

Não consigo encontrar o seletor certo para:

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

Quero alterar o valor para = 000000. Preciso do seletor para encontrar o "nome" e não o ID da entrada de texto.

Isso não deveria funcionar ?:

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

A solução apresentada não funciona, qual é o problema com isso?

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

Os dados JSON estão funcionando corretamente; a idéia é passar posteriormente os valores JSON para os valores de texto de entrada do formulário. Mas não está funcionando :(

Joricam
fonte

Respostas:

308

não, você precisa fazer algo como:

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

mas você realmente deve usar IDs únicos, se puder.

Você também pode ser mais específico, como:

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

EDITAR:

faça isso para encontrar sua entrada com base no atributo name:

$('input[name=sitebg]').val('000000');
Jason
fonte
Aceito esse awnser, você pode recomendar um bom livro / tutorial (de preferência um livro) sobre jquery, onde eu possa realmente aprender sobre seletores? especialmente seletores de formulário?
Joricam #
7
este é de longe a melhor coisa na internet: futurecolors.ru/jquery
Jason
@ Jason O link está quebrado, qual é o título do livro, por favor?
Oyalhi
@oyalhi oh não! Eu sinto Muito. esse comentário tem 5 anos, então eu acho que eles o derrubaram :(
Jason
@ Jason Sim, infelizmente. No entanto, você se lembra do título do livro?
oyalhi
31

A maneira jQuery de alterar o valor no campo de entrada de texto é:

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

isso mudará o atributo valuepara o elemento DOM com o ID #colorpickerField1de #EEEEEEpara#000000

Vladimir Kroz
fonte
26

A melhor prática é usar a identificação diretamente:

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

MGE
fonte
simples e melhor :)
MRRaja
2
Por que isso funciona, mas document.getElementById("#id").value = 'xxx';não funciona para mim? Ele não altera o valor do texto exibido, apenas a propriedade value do elemento DOM.
User3494047 de
1
Você já usa o método ById, # é para notação css. Remova.
Scott Chu
9

Ao definir o novo valor do elemento, é necessário alterar a ativação do acionador.

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

Richelly Italo
fonte
Isso corrigiu um problema para mim, onde o manipulador de eventos de alteração estava sendo chamado duas vezes; uma vez com o novo valor e, em seguida, novamente com [attr = val]
Peter Lenjo
3

Apenas adicionando à resposta de Jason, o .seletor é apenas para as aulas. Se você deseja selecionar algo diferente de elemento, ID ou classe, é necessário colocá-lo entre colchetes.

por exemplo

$('element[attr=val]')

Robert Ingrum
fonte