【问题标题】:Radio button Validation not working单选按钮验证不起作用
【发布时间】:2016-09-11 22:07:58
【问题描述】:

我需要验证单选按钮,但我正在努力寻找问题的根源。

基本上,当我提交时会发生什么,它不会验证表单及其所有字段。我知道是这个函数导致了问题,因为当它从 .js 文件中取出时,表单会正确验证。

下面是我的 HTML 文件中包含单选按钮的部分

<tr>
    <th align="left">Driver Required: </th>
    <td>
        <input type="radio" name="Driver" value="Yes" id="radio_error"> Yes
    </td>
 </tr>
 <tr>
 <td><br></td>
 <td>
     <input type="radio" name="Driver" value="No" id="radio_error"> No
 </td>
 </tr>
 <tr><th><br></th></tr>
     <tr>
         <th align="left">Insurance: </th>
         <td>
             <input type="radio" name="Insurance" value="None" id="radio_error"> None
          </td>
  </tr>
  <tr>
      <td><br></td>
      <td>
          <input type="radio" name="Insurance" value="CDW" id="radio_error"> Collision Damage Waiver
          <br>
          <input type="radio" name="Insurance" value="LI" id="radio_error"> Liability Insurance
          <br>
          <input type="radio" name="Insurance" value="PAI" id="radio_error"> Personal Accident Insurance
          <br>
          <input type="radio" name="Insurance" value="PEC" id="radio_error"> Personal Effects Coverage
      </td>
  </tr>

以下代码行来自 .js 文件。我有一个验证功能,我确定这不是问题。

function checkDriverRadio()
{
    var yesOrNo = "";
    var len = document.ClientForm.Drvier.length;
    var i;

    for (i = 0; i < len; i++) 
    {
        if (document.ClientForm.Drvier[i].checked)
        {
            yesOrNo = document.ClientForm.Driver[i].value;
            break;
        }
    }

    if (!document.ClientForm.Driver.checked)
    {
        document.getElementById("radio_error").innerHTML = "No option selected";
        return false;
    }
    else
    {
        document.getElementById("radio_error").innerHTML = "";
        return true;
    }
}

function checkInsuranceRadio()
{
    var option = "";
    var len = document.ClientForm.Insurance.length;
    var i;

    for (i = 0; i < len; i++) 
    {
        if (document.ClientForm.Insurance[i].checked)
        {
            option = document.ClientForm.Insurance[i].value;
            break;
        }
    }

    if (!document.ClientForm.Insurance.checked)
    {
        document.getElementById("radio_error").innerHTML = "No option selected";
        return false;
    }
    else
    {
        document.getElementById("radio_error").innerHTML = "";
        return true;
    }
}

【问题讨论】:

  • 怎么回事 document.ClientForm.Drvier.length; ?
  • 我需要看到更多的核心才能帮助你
  • @John 因为缩进问题,在这里放完整文件有点麻烦。我也许可以链接一个 onedrive 或 Dropbox 文件。
  • 很公平,什么是 ClientForm?我认为问题可能在那里
  • 你能帮我做一个小提琴吗?

标签: javascript html validation


【解决方案1】:

我认为有一个拼写错误...

if (document.ClientForm.Drvier[i].checked)
    {
        yesOrNo = document.ClientForm.Driver[i].value;
        break;

....您的文件名是 Driver 而不是 Drvier。 我希望这会有所帮助。

【讨论】:

    【解决方案2】:

    我知道您所有的单选按钮都有相同的 ID,单选按钮按您所做的 name="someName" 分组,正如其他答案所述,您需要查看一些印刷错误。我在这个小提琴中创建了一个简单的验证,如果有帮助,请检查一下。

    https://jsfiddle.net/mr_odoom/17xwdL79/

    【讨论】:

      猜你喜欢
      • 2020-04-12
      • 2017-07-21
      • 2020-02-02
      • 2017-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      相关资源
      最近更新 更多