Eu tenho dois botões de opção em um formulário HTML. Uma caixa de diálogo aparece quando um dos campos é nulo. Como posso verificar se um botão de opção está selecionado?
javascript
novato
fonte
fonte
Respostas:
Vamos fingir que você tem HTML assim
Para validação do lado do cliente, veja alguns Javascript para verificar qual deles está selecionado:
O exposto acima pode ser mais eficiente, dependendo da natureza exata da sua marcação, mas isso deve ser suficiente para você começar.
Se você está apenas olhando para ver se algum botão de opção está selecionado em qualquer lugar da página, o PrototypeJS facilita muito.
Aqui está uma função que retornará true se pelo menos um botão de opção estiver selecionado em algum lugar da página. Novamente, isso pode precisar ser ajustado dependendo do seu HTML específico.
Para a validação no servidor (lembre-se, você não pode depender inteiramente do Javascript para validação!) , Isso dependeria do idioma de sua escolha, mas você apenas verificaria o
gender
valor da sequência de solicitação.fonte
Com o jQuery , seria algo como
Deixe-me dividir isso em pedaços para cobrir mais claramente. O jQuery processa as coisas da esquerda para a direita.
input
limita a entrada de tags.[name=gender]
limita-o a tags com o nome gender no grupo anterior.:checked
limita-o a caixas de seleção / botões de opção selecionados no grupo anterior.Se você quiser evitar isso completamente, marque um dos botões de opção como marcado (
checked="checked"
) no código HTML, o que garantiria que um botão de opção esteja sempre selecionado.fonte
Uma maneira JavaScript baunilha
fonte
name
.Apenas tentando melhorar a solução de Russ Cam com um pouco de açúcar seletor de CSS inserido no JavaScript baunilha.
Não há necessidade real de jQuery aqui, o querySelectorAll é amplamente suportado agora.
Edit: corrigido um bug com o seletor css, eu incluí as aspas, embora você possa omiti-las, em alguns casos você não pode, por isso é melhor deixá-las.
fonte
a[href^="http://"]
) eles seriam necessários e a consistência é mais sustentável. Além disso, isso permite que a declaração do atributo corresponda ao HTML correspondente.Código HTML
Código Javascript:
fonte
Você pode usar esse script simples. Você pode ter vários botões de opção com os mesmos nomes e valores diferentes.
fonte
document.forms[0].elements['nameOfRadioList'].value
Os scripts desta página me ajudaram a criar o script abaixo, que eu acho mais completo e universal. Basicamente, ele validará qualquer número de botões de opção em um formulário, o que significa que garantirá que uma opção de opção tenha sido selecionada para cada um dos diferentes grupos de opções do formulário. por exemplo, no formulário de teste abaixo:
O script RadioValidator garantirá que uma resposta seja dada para 'test1' e 'test2' antes de ser enviada. Você pode ter tantos grupos de rádio no formulário e ele ignorará quaisquer outros elementos do formulário. Todas as respostas de rádio ausentes serão exibidas dentro de um único pop-up de alerta. Aqui vai, espero que ajude as pessoas. Quaisquer correções de erros ou modificações úteis são bem-vindas :)
fonte
Observe esse comportamento com o jQuery ao obter valores de entrada de rádio:
Portanto
$('input[name="myRadio"]').val()
, não retorna o valor verificado da entrada de rádio, como seria de esperar - ele retorna o valor do primeiro botão de opção.fonte
Com mootools ( http://mootools.net/docs/core/Element/Element )
html:
js:
fonte
esta é uma função utilitária que eu criei para resolver este problema
fonte
Isso seria válido para botões de opção que compartilham o mesmo nome, não é necessário JQuery.
Se estamos falando de caixas de seleção e queremos uma lista com as caixas de seleção marcadas, compartilhando um nome:
fonte
fonte
apenas uma pequena modificação em Mark Biek;
CÓDIGO HTML
e código Javascript para verificar se o botão de opção está selecionado
fonte
Existe uma maneira muito sofisticada de validar se algum dos botões de opção é verificado com o ECMA6 e o método
.some()
.Html:
E javascript:
isAnyRadioButtonChecked
serátrue
se alguns dos botões de opção estiverem marcados efalse
se nenhum deles estiver marcado.fonte
fonte
http://www.somacon.com/p143.php/
fonte
Com o JQuery, outra maneira de verificar o status atual dos botões de opção é obter o atributo 'verificado'.
Por exemplo:
Nesse caso, você pode verificar os botões usando:
fonte
$("#gender_male").attr("checked")
é uma string"checked"
e não um booleano.Este código alertará o botão de opção selecionado quando o formulário for enviado. Ele usou o jQuery para obter o valor selecionado.
fonte
Eu usei o operador spread e alguns para verificar pelo menos um elemento na matriz passa no teste.
Eu compartilho para quem preocupação.
fonte
Aqui está a solução que é expandida para não prosseguir com o envio e enviar um alerta se os botões de opção não estiverem marcados. É claro que isso significa que você precisa desmarcá-las para começar!
Lembre-se de definir o ID ('radio1', 'radio2' ou o que você chamou) no formato de cada um dos botões de opção ou o script não funcionará.
fonte
if (!document.getElementById('radio1').checked && !document.getElementById('radio2').checked) { alert(); }
.Um exemplo:
fonte
A forma
O script
O violino: http://jsfiddle.net/PNpUS/
fonte
Eu só quero garantir que algo seja selecionado (usando jQuery):
fonte
Se você deseja JavaScript de baunilha, não deseja confundir sua marcação adicionando IDs em cada botão de opção e se preocupando apenas com navegadores modernos , a seguinte abordagem funcional é um pouco mais agradável para mim do que um loop for:
Se nenhum deles estiver marcado, ele retornará
undefined
(embora você possa alterar a linha acima para retornar outra coisa, por exemplo, parafalse
retornar, você pode alterar a linha relevante acima para}).pop() || {value:false}).value;
:).Há também a abordagem de polyfill de previsão, uma vez que a interface RadioNodeList deve facilitar o uso de uma
value
propriedade na lista de elementos de rádio filho de formulário (encontrados no código acima comoformElement[radioName]
), mas que possui seus próprios problemas: Como polifill RadioNodeList ?fonte
Isso também está funcionando, evitando chamar um ID de elemento, mas chamando-o usando como um elemento de matriz.
O código a seguir baseia-se no fato de que uma matriz, denominada grupo de botões de opção, é composta por elementos de botões de opção na mesma ordem em que foram declarados no documento html:
fonte
HTML:
JAVAScript:
fonte
Dê botões de opção com o mesmo nome, mas com IDs diferentes.
fonte