У меня странная проблема с моей программой JS. У меня это работало нормально, но по какой-то причине оно больше не работает. Я просто хочу найти значение переключателя (который выбран) и вернуть его в переменную. По какой-то причине он продолжает возвращаться undefined
.
Вот мой код:
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
источник
источник
Ответы:
Вы можете сделать что-то вроде этого:
jsfiddle
Редактировать: Спасибо HATCHA и jpsetung за ваши предложения по редактированию.
источник
@
синтаксис устарел даже раньше, чем это (JQuery 1.2)@
этого, безусловно, должны быть удаленыdocument.querySelector()
Вероятно, сейчас следует рекомендовать подход в JavaScript.Это работает с любым исследователем.
Это простой способ получить значение любого типа ввода. Вам также не нужно включать путь JQuery.
источник
document.querySelector(...)
естьnull
.var selector = document.querySelector('input[name="genderS"]:checked'); if(selector) console.log(selector.value);
:checked
трюк полностью прибил его для меня ... для меня исправление чтения радиокнопок из формы шаблона Метеор былоaccountType = template.find("[name='optradio']:checked").value;
источник
document.forms.your-form-name.name-shared-by-radio-buttons.value
Начиная с jQuery 1.8, правильный синтаксис для запроса
Больше
$('input[@name="genderS"]:checked').val();
нет, который работал в jQuery 1.7 (с @ ).источник
Версия ECMAScript 6
источник
Самое простое решение:
источник
Попробуй это
Скрипка здесь .
источник
Изменить: Как сказал Chips_100, вы должны использовать:
напрямую, без использования тестовой переменной.
Старый ответ:
Разве тебе не
eval
нравится это?Я не знаю, как это работает, но для меня вы только копируете строку.
источник
var sizes = document.theForm[field];
и удалить первое присваивание, поэтому больше не используйтеtest
переменную.eval('var sizes=document.theForm.' + field)
?var sizes = eval(test);
будет работать таким образом (я просто проверяю его в firebug).field
скобки. Есть предположения, почему?Это чистый JavaScript, основанный на ответе @Fontas, но с кодом безопасности, который возвращает пустую строку (и избегает a
TypeError
), если не выбран переключатель.Код ломается так:
<input>
типом, (b) имеетname
атрибутgenderS
и (c) проверен.genderSRadio
Переменная truthy если линия 1 находки контроля и нуль / falsey , если он не делает.Для JQuery используйте ответ @ jbabey и обратите внимание, что если не выбрана выбранная кнопка-переключатель, он вернется
undefined
.источник
Если кто-то искал ответ и приземлился здесь, как я, из Chrome 34 и Firefox 33, вы можете сделать следующее:
или проще:
ссылка: https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList/value
источник
Вот пример для радио, где не используется атрибут Checked = "checked"
ДЕМО : http://jsfiddle.net/ipsjolly/hgdWp/2/ [ Нажмите «Найти», не выбирая радио » ]
Источник: http://bloggerplugnplay.blogspot.in/2013/01/validateget-checked-radio-value-in.html
источник
Вот хороший способ получить значение отмеченного переключателя с помощью простого JavaScript:
Источник: https://ultimatecourses.com/blog/get-value-checked-radio-buttons
Используя этот HTML:
Вы также можете использовать Array Find the
checked
property, чтобы найти отмеченный элемент:источник
Используя чистый JavaScript, вы можете обработать ссылку на объект, отправивший событие.
источник
Предположим, вам нужно разместить в форме разные строки переключателей, каждый из которых имеет отдельные имена атрибутов ('option1', 'option2' и т. д.), но одно и то же имя класса. Возможно, они вам нужны в нескольких строках, где каждая из них будет отправлять значение по шкале от 1 до 5, относящейся к вопросу. Вы можете написать свой JavaScript следующим образом:
Я также вставил бы окончательный вывод в скрытый элемент формы, который будет отправлен вместе с формой.
источник
источник
Если вы можете назначить Id для вашего элемента формы (), этот способ можно рассматривать как безопасный альтернативный способ (особенно, когда имя элемента радиогруппы не уникально в документе):
HTML:
источник
и т. д. тогда просто используйте
Или
источник
источник