Estou tendo algum problema estranho com meu programa JS. Eu tive isso funcionando corretamente, mas por algum motivo não está mais funcionando. Eu só quero encontrar o valor do botão de opção (qual deles está selecionado) e devolvê-lo a uma variável. Por alguma razão, ele continua voltando undefined
.
Aqui está o meu código:
function findSelection(field) {
var test = 'document.theForm.' + field;
var sizes = test;
alert(sizes);
for (i=0; i < sizes.length; i++) {
if (sizes[i].checked==true) {
alert(sizes[i].value + ' you got a value');
return sizes[i].value;
}
}
}
submitForm
:
function submitForm() {
var genderS = findSelection("genderS");
alert(genderS);
}
HTML:
<form action="#n" name="theForm">
<label for="gender">Gender: </label>
<input type="radio" name="genderS" value="1" checked> Male
<input type="radio" name="genderS" value="0" > Female<br><br>
<a href="javascript: submitForm()">Search</A>
</form>
javascript
html
for-loop
radio-button
mkyong
fonte
fonte
Respostas:
Você pode fazer algo assim:
jsfiddle
Editar: Obrigado HATCHA e jpsetung por suas sugestões de edição.
fonte
@
sintaxe foi preterido ainda mais cedo do que isso (jQuery 1.2)@
definitivamente deve ser removidodocument.querySelector()
provavelmente deve ser a abordagem recomendada em JavaScript direto agora.Isso funciona com qualquer explorador.
Essa é uma maneira simples de obter o valor de qualquer tipo de entrada. Você também não precisa incluir o caminho do jQuery.
fonte
document.querySelector(...)
isnull
.var selector = document.querySelector('input[name="genderS"]:checked'); if(selector) console.log(selector.value);
:checked
truque totalmente acertou em cheio para mim .. para mim a correção para ler botões de rádio a partir de um formulário Modelo de Meteor foiaccountType = template.find("[name='optradio']:checked").value;
fonte
document.forms.your-form-name.name-shared-by-radio-buttons.value
Desde o jQuery 1.8, a sintaxe correta para a consulta é
Não é
$('input[@name="genderS"]:checked').val();
mais, que estava funcionando no jQuery 1.7 (com o @ ).fonte
Versão ECMAScript 6
fonte
A solução mais simples:
fonte
Tente isto
Um violino aqui .
fonte
Edit: Como dito por Chips_100, você deve usar:
diretamente sem usar a variável de teste.
Resposta antiga:
Você não deveria
eval
gostar disso?Não sei como isso funciona, mas para mim você está apenas copiando uma string.
fonte
var sizes = document.theForm[field];
e excluir a primeira tarefa, para não usartest
mais a variável.eval('var sizes=document.theForm.' + field)
?var sizes = eval(test);
funcionaria dessa maneira (eu apenas a testo no firebug).field
colchetes. Algum palpite sobre o porquê?Isso é JavaScript puro, com base na resposta de @Fontas, mas com código de segurança para retornar uma string vazia (e evitar a
TypeError
) se não houver um botão de opção selecionado:O código se divide assim:
<input>
tipo, (b) possui umname
atributo degenderS
e (c) está marcado.genderSRadio
variável é verdadeira se a Linha 1 encontra o controle e null / falsey, se não encontrar.Para o JQuery, use a resposta de @ jbabey e observe que, se não houver um botão de opção selecionado, ele retornará
undefined
.fonte
Caso alguém esteja procurando uma resposta e tenha chegado aqui como eu, no Chrome 34 e Firefox 33, você pode fazer o seguinte:
ou mais simples:
referência: https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList/value
fonte
Aqui está um exemplo para rádios em que nenhum atributo Checked = "selected" é usado
DEMO : http://jsfiddle.net/ipsjolly/hgdWp/2/ [ Clique em Localizar sem selecionar nenhum rádio ]
Fonte: http://bloggerplugnplay.blogspot.in/2013/01/validateget-checked-radio-value-in.html
fonte
Aqui está uma boa maneira de obter o valor do botão de opção verificado com JavaScript simples:
Fonte: https://ultimatecourses.com/blog/get-value-checked-radio-buttons
Usando este HTML:
Você também pode usar o Array Find a
checked
propriedade para encontrar o item marcado:fonte
Usando um javascript puro, você pode manipular a referência ao objeto que despachou o evento.
fonte
vamos supor que você precise colocar diferentes linhas de botões de opção em um formulário, cada um com nomes de atributos separados ('opção1', 'opção2' etc), mas com o mesmo nome de classe. Talvez você precise deles em várias linhas, onde cada um deles enviará um valor com base em uma escala de 1 a 5, referente a uma pergunta. você pode escrever seu javascript da seguinte forma:
Também inseriria a saída final em um elemento oculto do formulário a ser enviado junto com o formulário.
fonte
fonte
Se for possível atribuir um ID para o elemento do formulário (), essa maneira poderá ser considerada uma maneira alternativa segura (especialmente quando o nome do elemento do grupo de rádio não for exclusivo no documento):
HTML:
fonte
etc então use apenas
Ou
fonte
fonte