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 :(

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');

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


26

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

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


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');


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]')

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.