如果选择了单选按钮,则检查JavaScript函数

时间:2011-03-07 18:55:48

标签: javascript function radio-button

<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”的辐射按钮。我代表我为此目的编写的函数。该函数将元素id作为参数并返回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;
}

但它不起作用。请告诉我如何修改我的功能,以检查是否检查了radiobutton。

2 个答案:

答案 0 :(得分:6)

您正在寻找标签名为“Merital_Status”的元素。将document.getElementsByTagName替换为document.getElementsByName,它应该有效。

答案 1 :(得分:1)

您正在混合IDNAME

您的单选按钮“set”需要具有相同的名称(您拥有),如果您需要通过ID单独引用它们,那么您需要添加一个ID到最后两个(当前未设置...如果您将标签应用于每个选项,则不需要)。您将需要每个单选按钮的标签标签,因为它允许用户单击单词而不仅仅是小单选按钮,从而提高了可用性。

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. 您在
  2. 中总是有一个以上的单选按钮
  3. 您的表单是第1个(索引0)表单...如果不是,您需要调整radioSet查找