Quero obter o valor selecionado de um grupo de botões de opção.
Aqui está o meu HTML:
<div id="rates">
<input type="radio" id="r1" name="rate" value="Fixed Rate"> Fixed Rate
<input type="radio" id="r2" name="rate" value="Variable Rate"> Variable Rate
<input type="radio" id="r3" name="rate" value="Multi Rate" checked="checked"> Multi Rate
</div>
Aqui está o meu .js:
var rates = document.getElementById('rates').value;
var rate_value;
if(rates =='Fixed Rate'){
rate_value = document.getElementById('r1').value;
}else if(rates =='Variable Rate'){
rate_value = document.getElementById('r2').value;
}else if(rates =='Multi Rate'){
rate_value = document.getElementById('r3').value;
}
document.getElementById('results').innerHTML = rate_value;
Eu continuo indefinido.
javascript
html
radio-button
ZombieBatman
fonte
fonte
$("input[type='radio'][name='rate']:checked").val();
.checked
<form></form>
container.Respostas:
O elemento rates é a
div
, portanto, não terá um valor. Provavelmente é de ondeundefined
vem isso.A
checked
propriedade informará se o elemento está selecionado:fonte
$("input[name=rate]:checked").val()
[checked]
) procura o atributo (ou seja, estado inicial). Você deve usar:checked
, que procura a propriedade (ou seja, estado atual) e que quase sempre é o que você deseja.document.querySelectorAll("input[name=rate]:checked")[0].value
Isso funciona no IE9 e acima e em todos os outros navegadores.
fonte
:checked
seletor.rate
não são necessárias.:checked
(s) elemento (s) - talvez ele tenha tudo "em hash e em cache" e é umaO(1)
operação. A menos que você o tenha perfilado para indicar algo como o tempo de consulta aumenta com o número de elementos na página, ou a menos que você entenda o código-fonte do navegador, não poderá saber.Você pode obter o valor usando a
checked
propriedadefonte
break
oureturn
dentro doif
bloco parasse passes adicionais no loop. Um ponto menor, mas bom estilo.Para vocês que vivem no limite:
Agora existe algo chamado RadioNodeList e o acesso à propriedade value retornará o valor da entrada atualmente marcada. Isso removerá a necessidade de primeiro filtrar a entrada 'marcada', como vemos em muitas das respostas postadas.
Exemplo de formulário
Para recuperar o valor verificado, você pode fazer algo assim:
O JSFiddle para provar isso: http://jsfiddle.net/vjop5xtq/
Observe que isso foi implementado no Firefox 33 (todos os outros principais navegadores parecem suportá-lo). Navegadores mais antigos precisarão de um polfyill para
RadioNodeList
que isso funcione corretamentefonte
form.elements["test"].value
funciona muito bem no Chrome [versão 49.0.2623.87 m].O que funcionou para mim é dado abaixo em api.jquery.com.
HTML
Javascript
A variável selectedOption conterá o valor do botão de opção selecionado (ou seja) o1 ou o2
fonte
Outra opção (aparentemente mais antiga) é usar o formato: "document.nameOfTheForm.nameOfTheInput.value;" por exemplo, document.mainForm.rads.value;
Você pode se referir ao elemento pelo nome em um formulário. No entanto, seu HTML original não contém um elemento de formulário.
Brinque aqui (funciona no Chrome e Firefox): https://jsfiddle.net/Josh_Shields/23kg3tf4/1/
fonte
Use document.querySelector ('input [tipo = radio]: marcado'). Value; para obter o valor da caixa de seleção selecionada, você pode usar outros atributos para obter um valor como nome = sexo etc. etc., siga o snippet abaixo.
Solução
Obrigado
fonte
CÓDIGO HTML:
<input type="radio" name="rdoName" value="YES"/> <input type="radio" name="rdoName" value="NO"/>
CÓDIGO DO PEDIDO:
Você vai ter
fonte
Em Javascript, podemos obter os valores usando os IDs "
getElementById()
" no código acima que você postou e não contêm o nome, portanto você pode modificar assimuse esse rate_value de acordo com seu código
fonte
Aproximadamente um ano se passou desde que a pergunta foi feita, mas achei que era possível uma melhora substancial das respostas. Acho esse o script mais fácil e versátil, porque verifica se um botão foi verificado e, em caso afirmativo, qual é o seu valor:
Você também pode chamar a função dentro de outra função, assim:
fonte
Supondo que seu elemento de formulário seja referido pela
myForm
variável abaixo e que seus botões de opção compartilhem o nome "meu-botão-de-rádio-grupo-nome", o seguinte é puro JavaScript e compatível com os padrões (embora eu não tenha verificado se ele está disponível em qualquer lugar ):O exemplo acima produzirá o valor de um elemento de botão de opção marcado (ou selecionado, como também é chamado), se houver, ou
null
não. O cerne da solução é anamedItem
função que trabalha especificamente com os botões de opção.Consulte HTMLFormElement.elements , HTMLFormControlsCollection.namedItem e especialmente RadioNodeList.value , como
namedItem
geralmente retorna umRadioNodeList
objeto.Eu uso o MDN porque ele permite rastrear a conformidade com os padrões, pelo menos em grande parte, e porque é mais fácil de compreender do que muitas publicações WhatWG e W3C.
fonte
RadioNodeList
através de algo comoform.elements[name]
ouform[name]
(talvez, uma especulação) ou através da minha sintaxe acima.A chamada direta de um botão de opção muitas vezes fornece o valor do botão PRIMEIRO, não o botão VERIFICADO. em vez de percorrer os botões de opção para ver qual deles está marcado, prefiro chamar uma
onclick
função javascript que define uma variável que pode ser recuperada posteriormente à vontade.que chama:
Uma vantagem adicional é que eu posso tratar dados e / ou reagir à verificação de um botão (neste caso, ativar o botão SUBMIT).
fonte
onchange
evento, caso o usuário use um teclado.Uma melhoria nas funções sugeridas anteriormente:
fonte
Minha opinião sobre este problema com javascript puro é encontrar o nó verificado, encontrar seu valor e removê-lo da matriz.
Observe que estou usando funções de seta . Veja este violino para um exemplo de trabalho.
fonte
tagName === 'INPUT'
verificação para garantir que você não esteja trabalhando em outras tags além deinput
.Se você estiver usando jQuery:
$('input[name="rate"]:checked').val();
fonte
Você pode usar
.find()
para selecionar o elemento marcado:fonte
então...
fonte
rates.rate.value
notrates.value
document.getElementById("rates").rate.value
[ou]document.forms[0].rate.value
verifique o valor por ID:
fonte
Eu usei a função jQuery.click para obter a saída desejada:
Espero que ajude.
fonte
Se os botões estiverem no formato
var myform = new FormData(getformbywhatever); myform.get("rate");
QuerySelector acima, é uma solução melhor. No entanto, esse método é fácil de entender, especialmente se você não tem idéia sobre CSS. Além disso, é provável que os campos de entrada estejam em um formulário de qualquer maneira.
Não verifiquei, existem outras soluções semelhantes, desculpe pela repetição
fonte
não pode obter valores de um botão de opção como esse, em vez disso, use
fonte
Se você estiver usando o
JQuery
, use o snippet abaixo para o grupo de botões de opção.fonte
Basta usar:
document.querySelector('input[rate][checked]').value
fonte
document.querySelector('input[name = rate]:checked').value
fonte
Você também pode percorrer os botões com um loop forEach nos elementos
fonte
https://codepen.io/anon/pen/YQxbZJ
O HTML
O JS
fonte
Em php é muito fácil a
página html
Pegue o valor do formulário para o php
fonte