Eu tenho botões de opção em HTML assim:
<td>
<input id="radio1" type="radio" name="correctAnswer" value="1">1</input>
<input id="radio2" type="radio" name="correctAnswer" value="2">2</input>
<input id="radio3" type="radio" name="correctAnswer" value="3">3</input>
<input id="radio4" type="radio" name="correctAnswer" value="4">4</input>
</td>
Isso está em uma tag de formulário e, quando o usuário envia um formulário, quero fazer com que todos os botões de opção retornem ao padrão. Significando que nenhum deles foi verificado.
Eu tenho esse código, mas dá um erro dizendo [0] is null or not an object
$('input[@name="correctAnswer"]')[0].checked = false;
$('input[@name="correctAnswer"]')[1].checked = false;
$('input[@name="correctAnswer"]')[2].checked = false;
$('input[@name="correctAnswer"]')[3].checked = false;
Estou fazendo isso no IE 6.
#(selector).prop('checked',true);
ocorrerá uma falha quando seguido pela tentativa de definir um botão de opção subsequente no mesmo grupo para um status não verificado. O truque é definir apenas o botão de opção para um estado verificado e deixar o grupo de botões de opção fazer o que faz (desmarque os outros ...) . Além disso, a chamada$(selector).click();
funciona e dispara todos os eventos associados.Respostas:
Nas versões do jQuery anteriores à 1.6, use:
Nas versões do jQuery após a versão 1.6, você deve usar:
mas se você estiver usando 1.6.1+, poderá usar o primeiro formulário (consulte a nota 2 abaixo).
Nota 1: é importante que o segundo argumento seja falso e não "falso", pois "falso" não é um valor falso. ie
Nota 2: A partir do jQuery 1.6.0, agora existem dois métodos semelhantes,
.attr
e.prop
que fazer duas coisas relacionadas, mas ligeiramente diferentes. Se, nesse caso em particular, as recomendações fornecidas acima funcionarem se você usar o 1.6.1+. O acima não funcionará com o 1.6.0, se você estiver usando o 1.6.0, atualize. Se você quiser os detalhes, continue lendo.Detalhes: Ao trabalhar com elementos DOM HTML normal, há propriedades ligados ao elemento DOM (
checked
,type
,value
, etc), que fornece uma interface para o estado de execução da página HTML. Há também a interface.getAttribute
/.setAttribute
que fornece acesso aos valores de atributo HTML, conforme fornecido no HTML. Antes da versão 1.6, o jQuery embaçava a distinção fornecendo um método,,.attr
para acessar os dois tipos de valores. O jQuery 1.6+ fornece dois métodos.attr
e.prop
é possível distinguir entre essas situações..prop
permite definir uma propriedade em um elemento DOM, enquanto.attr
permite definir um valor de atributo HTML. Se você estiver trabalhando com o DOM simples e definir a propriedade marcada,,elem.checked
paratrue
oufalse
altere o valor em execução (o que o usuário vê) e o valor retornado rastreia o estado da página.elem.getAttribute('checked')
no entanto, retorna apenas o estado inicial (e retorna'checked'
ouundefined
depende do estado inicial do HTML). No 1.6.1+, o uso de.attr('checked', false)
amboselem.removeAttribute('checked')
eelem.checked = false
uma vez que a alteração causou muitos problemas de compatibilidade com versões anteriores, não é possível saber se você deseja definir o atributo HTML ou a propriedade DOM. Veja mais informações na documentação para .prop .fonte
A melhor maneira de definir o estado dos botões de opção no jquery:
HTML:
Código Jquery (1.4+) para pré-selecionar um botão:
No código do Jquery 1.6+, o método .prop () é preferido:
Para desmarcar os botões:
fonte
Seu problema é que o seletor de atributos não inicia com a
@
.Tente o seguinte:
fonte
fonte
Finalmente, depois de muitos testes, acho que a maneira mais conveniente e eficiente de predefinir é:
A atualização é necessária com o objeto JQueryUI.
Recuperar o valor é fácil:
Testado com o JQuery 1.6.1, JQuery UI 1.8.
fonte
Sei que isso é antigo e que isso é um pouco fora de tópico, mas suponha que você deseje desmarcar apenas botões de opção específicos em uma coleção:
E se você estiver lidando com uma lista de botões de opção, poderá usar o seletor: selected para obter exatamente o que deseja.
fonte
Conjunto de botões de opção verificado no jquery:
código jquery:
fonte
Se você deseja limpar todos os botões de opção no DOM:
$('input[type=radio]').prop('checked',false);
fonte
fonte
Embora prop tenha alterado o status verificado, a alteração também mostra isso no formulário.
fonte
Onde você tem:
<input type="radio" name="enddate" value="1" />
Após o valor = "1", você também pode adicionar
unchecked =" false" />
A linha será então:
fonte
Defina todos os botões de opção de volta ao padrão:
fonte
Por que você não faz:
fonte