Функция JavaScript проверяется, если выбран переключатель - PullRequest
2 голосов
/ 07 марта 2011
<label for="Merital Status">Marital Status:</label>
    <input type="radio" title="Marital Status" name="Marital_Status" id="Marital Status" value="Single"/>Single
    <input type="radio" title="Marital Status" name="Marital_Status" value="Married"/>Married
    <input type="radio" title="Marital Status" name="Marital_Status" value="Divorced"/>Divorced

И я хочу написать функцию JavaScript, которая проверяет, выбран ли переключатель с именем «Merital_Status».Я представляю функцию, которую я написал для этой цели.Функция получает в качестве аргумента идентификатор элемента и возвращает boolen:

function radio_button_checker(elemId)
{
    var radios = document.getElementsByTagName(elemId);

    var value = false;


    for (var i = 0; i < radios.length; i++) 
    {

        if (radios[i].checked) 
        {

            value = true;
            break;
        }
    }
    return value;
}

И я вызываю эту функцию следующим образом:

if (radio_button_checker('Marital_Status') == false) 
{
    alert('Please fill in your Merital Status!');
    return false;
}

Но это не работает.Скажите, пожалуйста, как изменить мою функцию, чтобы проверить, включена ли кнопка радио.

Ответы [ 2 ]

6 голосов
/ 07 марта 2011

То, что вы делаете, ищет элемент с именем тега "Merital_Status". Замените document.getElementsByTagName на document.getElementsByName, и оно должно работать.

1 голос
/ 07 марта 2011

Вы смешиваете ID и NAME.

Ваша радио-кнопка "set" должна иметь одно и то же имя (которое у вас есть), и если вам нужно , чтобы ссылаться на них индивидуально по идентификатору, то вам нужно добавить идентификатор к последние два (в настоящее время не установлено ... и не требуется, если вы применяете метки к каждому отдельному параметру). Вам понадобятся метки для каждой переключательной кнопки, поскольку она повышает удобство использования, позволяя пользователю нажимать на слово, а не только на небольшую переключающую кнопку.

Marital Status:
  <label><input type="radio" name="Marital_Status" value="Single"/>Single</label>
  <label><input type="radio" name="Marital_Status" value="Married"/>Married</label>
  <label><input type="radio" name="Marital_Status" value="Divorced"/>Divorced</label>

Однако, когда вы тестируете ... вы хотите видеть, что по крайней мере 1 радио в наборе проверено. Вы можете сделать это с помощью:

function radioButtonChecker(fieldNAME){
  var radioSet = document.forms[0].elements[fieldName];
  for(var i=0;i<radioSet.length;i++){
    if(radioSet[i].checked){
      return true;
    }
  }
  return false;
}

Здесь сделано несколько предположений.

  1. У вас всегда есть более 1 переключателя в наборе
  2. Ваша форма является 1-ой (индекс 0) ... если нет, вам нужно настроить поиск на RadioSet
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...