Відповіді:
Давайте зробимо вигляд, що у вас є такий HTML
<input type="radio" name="gender" id="gender_Male" value="Male" />
<input type="radio" name="gender" id="gender_Female" value="Female" />
Для перевірки на стороні клієнта, ось Javascript, щоб перевірити, який з них вибрано:
if(document.getElementById('gender_Male').checked) {
//Male radio button is checked
}else if(document.getElementById('gender_Female').checked) {
//Female radio button is checked
}
Сказане може бути більш ефективним залежно від точного характеру розмітки, але цього має бути достатньо для початку роботи.
Якщо ви просто хочете побачити, чи вибрана будь- яка радіо-кнопка де-небудь на сторінці, PrototypeJS робить це дуже просто.
Ось функція, яка поверне справжнє значення, якщо десь на сторінці буде вибрано хоча б одну перемикач. Знову ж, це, можливо, доведеться змінити залежно від конкретного HTML-коду.
function atLeastOneRadio() {
return ($('input[type=radio]:checked').size() > 0);
}
Для перевірки на стороні сервера (пам’ятайте, ви не можете повністю залежати від Javascript для перевірки!) , Це залежатиме від вашої мови вибору, але ви хочете перевірити genderзначення рядка запиту.
З jQuery це було б щось подібне
if ($('input[name=gender]:checked').length > 0) {
// do something here
}
Дозвольте мені розбити це на частини, щоб ясніше це покрити. jQuery обробляє речі зліва направо.
input[name=gender]:checked
input обмежує його введенням тегів.[name=gender] обмежує його тегами з іменем статі в попередній групі.:checked обмежує його прапорцями / перемикачами, вибраними в попередній групі.Якщо ви хочете цього взагалі уникнути, позначте одну з перемикачів як встановлену ( checked="checked") у HTML-коді, що гарантувало б, що одна радіо кнопка завжди обрана.
Ванільний спосіб JavaScript
var radios = document.getElementsByTagName('input');
var value;
for (var i = 0; i < radios.length; i++) {
if (radios[i].type === 'radio' && radios[i].checked) {
// get value, set checked flag or do whatever you need to
value = radios[i].value;
}
}
name.
Просто намагаюся вдосконалити рішення Russ Cam з використанням деяких цукрових селекторів CSS, що вкинуті ванільним JavaScript.
var radios = document.querySelectorAll('input[type="radio"]:checked');
var value = radios.length>0? radios[0].value: null;
Тут немає реальної потреби в jQuery, querySelectorAll досить широко підтримується.
Редагувати: виправлено помилку за допомогою селектора css, я включив цитати, хоча ви можете їх опустити, в деяких випадках не можете, тому краще залишити їх.
a[href^="http://"]) вони були б потрібні, а послідовність є більш ретельною. Крім того, це дозволяє декларації атрибутів відповідати відповідному HTML.
HTML-код
<input type="radio" name="offline_payment_method" value="Cheque" >
<input type="radio" name="offline_payment_method" value="Wire Transfer" >
Код Javascript:
var off_payment_method = document.getElementsByName('offline_payment_method');
var ischecked_method = false;
for ( var i = 0; i < off_payment_method.length; i++) {
if(off_payment_method[i].checked) {
ischecked_method = true;
break;
}
}
if(!ischecked_method) { //payment method button is not checked
alert("Please choose Offline Payment Method");
}
Ви можете використовувати цей простий сценарій. У вас може бути кілька радіо кнопок з однаковими назвами та різними значеннями.
var checked_gender = document.querySelector('input[name = "gender"]:checked');
if(checked_gender != null){ //Test if something was checked
alert(checked_gender.value); //Alert the value of the checked.
} else {
alert('Nothing checked'); //Alert, nothing was checked.
}
document.forms[0].elements['nameOfRadioList'].value
Сценарії на цій сторінці допомогли мені придумати нижченаведений сценарій, який, на мою думку, є більш повним та універсальним. В основному він підтверджує будь-яку кількість радіо кнопок у формі, тобто означає, що для кожної з різних радіогруп у формі вибрано параметр радіо. наприклад, у тестовій формі нижче:
<form id="FormID">
Yes <input type="radio" name="test1" value="Yes">
No <input type="radio" name="test1" value="No">
<br><br>
Yes <input type="radio" name="test2" value="Yes">
No <input type="radio" name="test2" value="No">
<input type="submit" onclick="return RadioValidator();">
Сценарій RadioValidator переконається, що відповідь була надана і для 'test1', і для 'test2', перш ніж вона подається. Ви можете мати стільки радіогруп у формі, і вона буде ігнорувати будь-які інші елементи форми. Усі відсутні відповіді на радіо відображатимуться в одному спливаючому вікні попередження. Ось так, я сподіваюся, що це допомагає людям. Будь-які виправлення помилок або корисні зміни вітаються :)
<SCRIPT LANGUAGE="JAVASCRIPT">
function RadioValidator()
{
var ShowAlert = '';
var AllFormElements = window.document.getElementById("FormID").elements;
for (i = 0; i < AllFormElements.length; i++)
{
if (AllFormElements[i].type == 'radio')
{
var ThisRadio = AllFormElements[i].name;
var ThisChecked = 'No';
var AllRadioOptions = document.getElementsByName(ThisRadio);
for (x = 0; x < AllRadioOptions.length; x++)
{
if (AllRadioOptions[x].checked && ThisChecked == 'No')
{
ThisChecked = 'Yes';
break;
}
}
var AlreadySearched = ShowAlert.indexOf(ThisRadio);
if (ThisChecked == 'No' && AlreadySearched == -1)
{
ShowAlert = ShowAlert + ThisRadio + ' radio button must be answered\n';
}
}
}
if (ShowAlert != '')
{
alert(ShowAlert);
return false;
}
else
{
return true;
}
}
</SCRIPT>
Зверніть увагу на цю поведінку з jQuery при отриманні значень вхідного радіо:
$('input[name="myRadio"]').change(function(e) { // Select the radio input group
// This returns the value of the checked radio button
// which triggered the event.
console.log( $(this).val() );
// but this will return the first radio button's value,
// regardless of checked state of the radio group.
console.log( $('input[name="myRadio"]').val() );
});
Таким $('input[name="myRadio"]').val()чином, не повертає перевірене значення радіовходу, як ви могли очікувати - воно повертає значення першої радіо кнопки.
З mootools ( http://mootools.net/docs/core/Element/Element )
html:
<input type="radio" name="radiosname" value="1" />
<input type="radio" name="radiosname" value="2" id="radiowithval2"/>
<input type="radio" name="radiosname" value="3" />
js:
// Check if second radio is selected (by id)
if ($('radiowithval2').get("checked"))
// Check if third radio is selected (by name and value)
if ($$('input[name=radiosname][value=3]:checked').length == 1)
// Check if something in radio group is choosen
if ($$('input[name=radiosname]:checked').length > 0)
// Set second button selected (by id)
$("radiowithval2").set("checked", true)
це утиліта, яку я створив для вирішення цієї проблеми
//define radio buttons, each with a common 'name' and distinct 'id'.
// eg- <input type="radio" name="storageGroup" id="localStorage">
// <input type="radio" name="storageGroup" id="sessionStorage">
//param-sGroupName: 'name' of the group. eg- "storageGroup"
//return: 'id' of the checked radioButton. eg- "localStorage"
//return: can be 'undefined'- be sure to check for that
function checkedRadioBtn(sGroupName)
{
var group = document.getElementsByName(sGroupName);
for ( var i = 0; i < group.length; i++) {
if (group.item(i).checked) {
return group.item(i).id;
} else if (group[0].type !== 'radio') {
//if you find any in the group not a radio button return null
return null;
}
}
}
Це справедливо для радіо кнопок, що мають одне й те саме ім'я, JQuery не потрібен.
var x = Array.prototype.filter.call(document.getElementsByName('checkThing'), function(x) { return x.checked })[0];
Якщо ми говоримо про прапорці, і ми хочемо, щоб список із прапорцями встановив прапорець, щоб поділитися ім'ям:
var x = Array.prototype.filter.call(document.getElementsByName('checkThing'), function(x) { return x.checked });
if(document.querySelectorAll('input[type="radio"][name="name_of_radio"]:checked').length < 1)
просто модифікація біта ліла до Марка Біка;
HTML-КОД
<form name="frm1" action="" method="post">
<input type="radio" name="gender" id="gender_Male" value="Male" />
<input type="radio" name="gender" id="gender_Female" value="Female" / >
<input type="button" value="test" onclick="check1();"/>
</form>
і код Javascript, щоб перевірити, чи вибрано радіо-кнопку
<script type="text/javascript">
function check1() {
var radio_check_val = "";
for (i = 0; i < document.getElementsByName('gender').length; i++) {
if (document.getElementsByName('gender')[i].checked) {
alert("this radio button was clicked: " + document.getElementsByName('gender')[i].value);
radio_check_val = document.getElementsByName('gender')[i].value;
}
}
if (radio_check_val === "")
{
alert("please select radio button");
}
}
</script>
Існує дуже складний спосіб перевірити, чи перевірена будь-яка з перемикачів за допомогою ECMA6 та методу .some().
Html:
<input type="radio" name="status" id="marriedId" value="Married" />
<input type="radio" name="status" id="divorcedId" value="Divorced" />
І javascript:
let htmlNodes = document.getElementsByName('status');
let radioButtonsArray = Array.from(htmlNodes);
let isAnyRadioButtonChecked = radioButtonsArray.some(element => element.checked);
isAnyRadioButtonCheckedбуде, trueякщо деякі перемикачі перевірені, і falseякщо жодна з них не встановлена.
http://www.somacon.com/p143.php/
function getCheckedValue(radioObj) {
if(!radioObj)
return "";
var radioLength = radioObj.length;
if(radioLength == undefined)
if(radioObj.checked)
return radioObj.value;
else
return "";
for(var i = 0; i < radioLength; i++) {
if(radioObj[i].checked) {
return radioObj[i].value;
}
}
return "";
}
З JQuery, ще один спосіб перевірити поточний стан радіо кнопок - це отримати атрибут "перевірений".
Наприклад:
<input type="radio" name="gender_male" value="Male" />
<input type="radio" name="gender_female" value="Female" />
У цьому випадку ви можете перевірити кнопки, використовуючи:
if ($("#gender_male").attr("checked") == true) {
...
}
$("#gender_male").attr("checked")є рядок, "checked"а не булева.
Цей код попередить вибрану перемикач при надходженні форми. Для отримання вибраного значення використовували jQuery.
$("form").submit(function(e) {
e.preventDefault();
$this = $(this);
var value = $this.find('input:radio[name=COLOR]:checked').val();
alert(value);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<input name="COLOR" id="Rojo" type="radio" value="red">
<input name="COLOR" id="Azul" type="radio" value="blue">
<input name="COLOR" id="Amarillo" type="radio" value="yellow">
<br>
<input type="submit" value="Submit">
</form>
Я використовував оператор розповсюдження, а деякі для перевірки хоча б одного елемента в масиві проходять тест.
Я поділяю, щодо кого хвилює.
var checked = [...document.getElementsByName("gender")].some(c=>c.checked);
console.log(checked);
<input type="radio" name="gender" checked value="Male" />
<input type="radio" name="gender" value="Female" / >
Ось розширене рішення, щоб не продовжувати подання та надсилати попередження, якщо радіо кнопки не встановлені. Звичайно, це означає, що для початку ви повинні їх не перевірити!
if(document.getElementById('radio1').checked) {
} else if(document.getElementById('radio2').checked) {
} else {
alert ("You must select a button");
return false;
}
Просто пам’ятайте, що встановити ідентифікатор («radio1», «radio2» або як би ви його не назвали) у формі для кожної з перемикачів або сценарій не працюватиме.
if (!document.getElementById('radio1').checked && !document.getElementById('radio2').checked) { alert(); }.
Приклад:
if (!checkRadioArray(document.ExamEntry.level)) {
msg+="What is your level of entry? \n";
document.getElementById('entry').style.color="red";
result = false;
}
if(msg==""){
return result;
}
else{
alert(msg)
return result;
}
function Radio() {
var level = radio.value;
alert("Your level is: " + level + " \nIf this is not the level your taking then please choose another.")
}
function checkRadioArray(radioButtons) {
for(var r=0;r < radioButtons.length; r++) {
if (radioButtons[r].checked) {
return true;
}
}
return false;
}
Форма
<form name="teenageMutant">
<input type="radio" name="ninjaTurtles"/>
</form>
Сценарій
if(!document.teenageMutant.ninjaTurtles.checked){
alert('get down');
}
Загадка: http://jsfiddle.net/PNpUS/
Я просто хочу переконатися, що щось вибирається (використовуючи jQuery):
// html
<input name="gender" type="radio" value="M" /> Male <input name="gender" type="radio" value="F" /> Female
// gender (required)
var gender_check = $('input:radio[name=gender]:checked').val();
if ( !gender_check ) {
alert("Please select your gender.");
return false;
}
Якщо ви хочете, щоб ванільний JavaScript, не хотілося захаращувати свою розмітку, додаючи ідентифікатори на кожен перемикач і дбаєте лише про сучасні браузери , наступний функціональний підхід для мене трохи смачніший, ніж цикл for:
<form id="myForm">
<label>Who will be left?
<label><input type="radio" name="output" value="knight" />Kurgan</label>
<label><input type="radio" name="output" value="highlander" checked />Connor</label>
</label>
</form>
<script>
function getSelectedRadioValue (formElement, radioName) {
return ([].slice.call(formElement[radioName]).filter(function (radio) {
return radio.checked;
}).pop() || {}).value;
}
var formEl = document.getElementById('myForm');
alert(
getSelectedRadioValue(formEl, 'output') // 'highlander'
)
</script>
Якщо не встановлено жодної позначки, вона повернеться undefined(хоча ви можете змінити рядок вище, щоб повернути щось інше, наприклад, щоб falseповернутись, ви можете змінити відповідний рядок вище на }).pop() || {value:false}).value;:).
Існує також перспективний підхід до заповнення поліфункції, оскільки інтерфейс RadioNodeList повинен полегшити просто використання valueвластивості у списку дочірніх радіоелементів (знайдений у наведеному вище коді як formElement[radioName]), але у цього є свої проблеми: Як заповнити RadioNodeList ?
Це також працює, уникаючи викликати ідентифікатор елемента, але викликати його, використовуючи як елемент масиву.
Наступний код заснований на тому, що масив, іменований як група радіо кнопок, складається з елементів radiobuttons у тому ж порядку, що і де задекларовано в html-документі:
if(!document.yourformname.yourradioname[0].checked
&& !document.yourformname.yourradioname[1].checked){
alert('is this working for all?');
return false;
}
HTML:
<label class="block"><input type="radio" name="calculation" value="add">+</label>
<label class="block"><input type="radio" name="calculation" value="sub">-</label>
<label class="block"><input type="radio" name="calculation" value="mul">*</label>
<label class="block"><input type="radio" name="calculation" value="div">/</label>
<p id="result"></p>
JAVAScript:
var options = document.getElementsByName("calculation");
for (var i = 0; i < options.length; i++) {
if (options[i].checked) {
// do whatever you want with the checked radio
var calc = options[i].value;
}
}
if(typeof calc == "undefined"){
document.getElementById("result").innerHTML = " select the operation you want to perform";
return false;
}
Укажіть радіо кнопки, однойменні, але різні ідентифікатори.
var verified1 = $('#SOME_ELEMENT1').val();
var verified2 = $('#SOME_ELEMENT2').val();
var final_answer = null;
if( $('#SOME_ELEMENT1').attr('checked') == 'checked' ){
//condition
final_answer = verified1;
}
else
{
if($('#SOME_ELEMENT2').attr('checked') == 'checked'){
//condition
final_answer = verified2;
}
else
{
return false;
}
}