试图验证我的单选按钮,但它只是不工作

Posted

技术标签:

【中文标题】试图验证我的单选按钮,但它只是不工作【英文标题】:Trying to validate my radio buttons but it's just not working 【发布时间】:2014-01-04 11:29:51 【问题描述】:

在 java 脚本验证方面,我是一个极端的新手,所以如果我的代码中的所有内容都是错误的,我不会感到惊讶。

我正在尝试验证我的单选按钮。

我之前用这种格式尝试过:

if (document.ExamEntry.GCSE.checked == true) 
confirm("You have selected GCSE. Is this correct?");
if (document.ExamEntry.A2.checked == true) 
confirm("You have selected GCSE. Is this correct?");
if (document.ExamEntry.A2.checked == true) 
confirm("You have selected A2. Is this correct?");

因为我希望它为每个单选按钮提供一条消息,但这当然不起作用。 (sumbit 按钮通过转发到下一页来工作,但取消按钮的作用相同,因为它没有给出我不知道该怎么做的命令)有人告诉我 onClick 命令会很好,但我试过了它仍然失败,因为我不太确定如何应用它。

所以我尝试了这个:(我现在的新代码)

functioncheckRadio  () 
        var level = "";
        var qualification = document.ExamEntry.Rbutton.value;
        var i;

        for (i=0; i <qualification; i++) 
            if (document.ExamEntry.qualification[i].checked) 
                    level = document.ExamEntry.Rbutton.value;
                    break;
            
        
        if (level == "") 
            document.getElementById("Rbutton").innerhtml = "You must
            select a qualification level";
            return false;
        
        else 
            document.getElementById("Rbutton").innerHTML = "";
            return = true;
        
    

这是我的html:

  <td id="RadioGCSE">GCSE</td>
  <td><input type="radio" name="Rbutton" value="GCSE" id="r1" checked = "checked" /></td>
  <tr>
  <td id="RadioAS">AS</td>
  <td><input type="radio" name="Rbutton" value="AS" id="r2" /></td>
  </tr>
  <td id="RadioA2">A2</td>
  <td><input type="radio" name="Rbutton" value="A2" id="r3" /></td>
  <tr>

我的意图是验证每个单选按钮。例如: 如果选择了 GCSE,那么它将显示以下消息:“您已选择 GCSE。这是正确的”,并带有一个提交框,在单击时将其转发到下一页,或者一个取消按钮,它只是停止事件以便用户停留在同一页面上,以便他们可以选择其他选项。

对于冗长的代码/编写量,我深表歉意。我是一个明显的新手。

【问题讨论】:

这还不是你所有的 HTML 对吧?如果是,则无效。您缺少&lt;table&gt;&lt;/table&gt; 标签和&lt;tbody&gt;&lt;/tbody&gt; 标签。 return = true; 是无效的语法。我想你的意思是return true;。另外,尝试将functioncheckRdaio 更改为function checkRadio @War10ck 不,这不是我的全部 HTML。我确实提到了其他标签,只是上面没有显示。 @squeamishossifrage 尝试返回 true;和功能 checkRadio 但没有帮助。感谢您的回复(和war1ock) 好吧,您还没有说明如何或何时(甚至 if)调用此函数。我只是指出明显的错误。也许您只需要更仔细地检查您的代码。 【参考方案1】:

每个输入都应该有一个唯一的 id。

<td id="RadioGCSE">GCSE</td>
  <td><input type="radio" id="Rbutton1" name="Rbutton1" value="GCSE" id="r1" checked = "checked" /></td>
  <tr>
  <td id="RadioAS">AS</td>
  <td><input type="radio" id="Rbutton2" name="Rbutton2" value="AS" id="r2" /></td>
  </tr>
  <td id="RadioA2">A2</td>
  <td><input type="radio" id="Rbutton3" name="Rbutton2" value="A2" id="r3" /></td>
  <tr>

您还必须使用“getElementsByName”或更好的方法进行验证,使用“getElementById”

if (document.getElementById('Rbutton1').checked == true) 
    confirm("You have selected GCSE. Is this correct?");

if (document.getElementById('Rbutton2').checked == true) 
    confirm("You have selected GCSE. Is this correct?");

if (document.getElementById('Rbutton3').checked == true) 
    confirm("You have selected A2. Is this correct?");

此处的示例: http://jsfiddle.net/rv9uu/2/

【讨论】:

【参考方案2】:

也许你可以试试这个代码。它会提醒您选择的单选按钮的值。

脚本:

<script type="text/javascript" language="javascript">
<!--
function CheckRadio() 
     var rdio = document.getElementsByTagName('input');

     for (var i=0; i<rdio.length; i++) 
      if (rdio[i].type == 'radio' && rdio[i].checked) 
          alert("You selected " + rdio[i].value); 
     

-->
</script>

HTML:

<form method="post" action="">
    <input type="radio" name="Rbutton" value="GCSE" id="r1" />GCSE<br />
    <input type="radio" name="Rbutton" value="AS" id="r2" />AS<br />
    <input type="radio" name="Rbutton" value="A2" id="r3" />A2<br /><br />
    <input type="button" name="btn" value="Submit" onclick="javascript: CheckRadio()">
</form>

【讨论】:

以上是关于试图验证我的单选按钮,但它只是不工作的主要内容,如果未能解决你的问题,请参考以下文章

防止基于选择框选择的单选按钮更改

javascript中的单选按钮验证

验证 .validate() 规则 jquery 函数上所需的单选按钮

如何保存单选按钮的状态?

离子单选按钮验证

检查提交的单选按钮是否为true - symfony