Проверка значения группы переключателей через JavaScript?
Это может показаться глупым и совершенно глупым, но я не могу понять, как проверить значение группы переключателей в моей HTML-форме с помощью JavaScript. У меня есть следующий код:
<input type="radio" id="genderm" name="gender" value="male" />
<label for="genderm">Male</label>
<input type="radio" id="genderf" name="gender" value="female" />
<label for="genderf">Female</label>
Как мне получить значение gender через JavaScript?
7 ответов:
если вы используете библиотеку JavaScript, такие как jQuery, это очень просто:
alert($('input[name=gender]:checked').val());этот код будет выбрать
checkedвходgenderимя, и получает этоvalue. Просто, не так ли?
использовать документ.querySelector() Если вы хотите избежать рамок (которые я почти всегда хочу).
document.querySelector('input[name="gender"]:checked').value
в чистом Javascript:
var genders = document.getElementsByName("gender"); var selectedGender; for(var i = 0; i < genders.length; i++) { if(genders[i].checked) selectedGender = genders[i].value; }обновление
в чистом Javascript без цикла, используя более новые (и потенциально еще не поддерживаемые)
RadioNodeList:var form_elements = document.getElementById('my_form').elements; var selectedGender = form_elements['gender'].value;единственная загвоздка в том, что
RadioNodeListвозвращено толькоHTMLFormElement.elementsилиHTMLFieldSetElement.elementsсобственность, поэтому вы должны иметь некоторый идентификатор для формы или набор полей, что радио входы, завернутые в, чтобы схватить его первым.
чтобы получить значение, вы должны сделать это:
document.getElementById("genderf").value;но проверить, есть ли переключатель проверил или выбран:
document.getElementById("genderf").checked;
попробуй:
var selectedVal; for( i = 0; i < document.form_name.gender.length; i++ ) { if(document.form_name.gender[i].checked) selectedVal = document.form_name.gender[i].value; //male or female break; } }
Если вы обернете элементы формы в тег формы с атрибутом name, вы можете легко получить значение с помощью документа.имя формы.radioGroupName.значение.
<form name="myForm"> <input type="radio" id="genderm" name="gender" value="male" /> <label for="genderm">Male</label> <input type="radio" id="genderf" name="gender" value="female" /> <label for="genderf">Female</label> </form> <script> var selected = document.forms.myForm.gender.value; </script>
без петли:
document.getElementsByName('gender').reduce(function(value, checkable) { if(checkable.checked == true) value = checkable.value; return value; }, '');
reduce- это просто функция, которая будет последовательно подавать элементы массива во второй аргумент обратного вызова и ранее возвращенную функцию в значение, в то время как для первого запуска она будет использовать значение второго аргумента.единственный минус этого подхода заключается в том, что reduce будет пересекать каждый элемент, возвращаемый
getElementsByNameдаже после того, как он нашел переключатель.