尝试验证我的单选按钮,但它就是不起作用。

4

我是一名完全没有经验的JavaScript验证初学者,如果我代码里的每一个细节都有问题,那也不奇怪。

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

之前我使用了以下格式进行验证:

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?");

因为我希望每个单选按钮都能提供一个消息,但显然这种方法行不通。(提交按钮可以跳转到下一页,但取消按钮没有执行操作,因为我不知道该如何赋命令)有人告诉我可以使用"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代码,对吧?如果是的话,它是无效的。你缺少了<table></table>标签和<tbody></tbody>标签。 - War10ck
1
return = true; 是无效的语法。我认为你想表达的是 return true;。另外,尝试将 functioncheckRdaio 改成 function checkRadio - r3mainer
@War10ck 不,那不是我所有的HTML。我确实有其他提到的标签,只是上面没有显示出来。 - user3093021
@squeamishossifrage 尝试返回 true; 但是 checkRadio 函数还没有帮助。虽然感谢回复(和 war1ock)。 - user3093021
好的,你还没有展示这个函数是如何被调用的,或者它是否被调用。我只是指出了明显的错误。也许你只需要更仔细地检查一下你的代码。 - r3mainer
@user3093021,为什么你在问题中添加了jQuery标签?你只是使用JavaScript。 - azuax
2个回答

0
每个输入应该有一个唯一的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/


0
也许你可以尝试这段代码。它会弹出你选择的单选按钮的值。
脚本:
<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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接