Javascript表单(带有单选按钮)验证不起作用

Javascript表单(带有单选按钮)验证不起作用,javascript,forms,validation,Javascript,Forms,Validation,这段代码在今天早些时候运行,然后随机停止,某些内容必须更改,但我无法确定是什么-请参见以下内容: **更新-代码更新如下。现在它可以正确识别是否选中了单选按钮,但是如果用户在显示警报后尝试重新提交表单,则识别的状态无法更新。是否需要某种循环 function checkForm() { var x=document.forms["sdcomp"]["name"].value; if (x==null || x=="") { alert("Name must be filled out");

这段代码在今天早些时候运行,然后随机停止,某些内容必须更改,但我无法确定是什么-请参见以下内容:

**更新-代码更新如下。现在它可以正确识别是否选中了单选按钮,但是如果用户在显示警报后尝试重新提交表单,则识别的状态无法更新。是否需要某种循环

  function checkForm()
{
var x=document.forms["sdcomp"]["name"].value;
if (x==null || x=="")
{
alert("Name must be filled out");
return false;
}
var x=document.forms["sdcomp"]["email"].value;
var atpos=x.indexOf("@");
var dotpos=x.lastIndexOf(".");
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
{
alert("Please enter a valid e-mail address");
return false;
}
if (document.getElementById("questionone").checked==false)
{
alert("Question one must be completed");
return false;
}
if (document.getElementById("questiontwo").checked==false)
{
alert("Question two must be completed");
return false;
}
if (document.getElementById("questionthree").checked==false)
{
alert("Question three must be completed");
return false;
}
if (document.getElementById("questionfour").checked==false)
{
alert("Question four must be completed");
return false;
}
}
函数检查表()
{
var x=document.forms[“sdcomp”][“name”].value;
如果(x==null | | x==“”)
{
警告(“必须填写姓名”);
返回false;
}
var x=document.forms[“sdcomp”][“email”]值;
var atpos=x.indexOf(“@”);
var dotpos=x.lastIndexOf(“.”);
如果(atpos)
姓名:


电邮:


乌塞恩·博尔特是目前男子100米世界纪录的保持者,但他的最佳时间是什么

8.45秒 9.58秒 10.12秒 9.32

问题二:

答案一 答案二 回答三 答案四

问题三:

答案一 答案二 回答三 答案四

问题四:

答案一 答案二 回答三 答案四


您对此仍有疑问,是否可以帮助我?再次感谢!

能否显示整个表单?同时,请尝试以下操作:

function checkForm() {
    var x=document.forms["sdcomp"]["name"].value;

    if (x==null || x=="") {
        alert("Name must be filled out");
        return false;
    }

    var x=document.forms["sdcomp"]["email"].value;
    var atpos=x.indexOf("@");
    var dotpos=x.lastIndexOf(".");

    if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length) {
        alert("Please enter a valid e-mail address");
        return false;
    }

    if (document.getElementById("questionone").checked) {

        alert("Option one is selected");

    } else if (document.getElementById("questiontwo").checked) {

        alert("Option two is selected");

    } else if (document.getElementById("questionthree").checked) {

        alert("Option three is selected");

    } else if (document.getElementById("questionfour").checked) {

        alert("Option four is selected");

    } else {

        alert("No option is selected");

    }
}
函数检查表(){
var x=document.forms[“sdcomp”][“name”].value;
如果(x==null | | x==“”){
警告(“必须填写姓名”);
返回false;
}
var x=document.forms[“sdcomp”][“email”]值;
var atpos=x.indexOf(“@”);
var dotpos=x.lastIndexOf(“.”);

如果(atpos可以显示整个表单吗?同时,请尝试以下操作:

function checkForm() {
    var x=document.forms["sdcomp"]["name"].value;

    if (x==null || x=="") {
        alert("Name must be filled out");
        return false;
    }

    var x=document.forms["sdcomp"]["email"].value;
    var atpos=x.indexOf("@");
    var dotpos=x.lastIndexOf(".");

    if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length) {
        alert("Please enter a valid e-mail address");
        return false;
    }

    if (document.getElementById("questionone").checked) {

        alert("Option one is selected");

    } else if (document.getElementById("questiontwo").checked) {

        alert("Option two is selected");

    } else if (document.getElementById("questionthree").checked) {

        alert("Option three is selected");

    } else if (document.getElementById("questionfour").checked) {

        alert("Option four is selected");

    } else {

        alert("No option is selected");

    }
}
函数检查表(){
var x=document.forms[“sdcomp”][“name”].value;
如果(x==null | | x==“”){
警告(“必须填写姓名”);
返回false;
}
var x=document.forms[“sdcomp”][“email”]值;
var atpos=x.indexOf(“@”);
var dotpos=x.lastIndexOf(“.”);

如果(atpos首先,在您的问题中,所有答案都具有相同的id='questionone'。您需要删除这些id

要检查是否选中了特定名称组,可以使用:

function isAnswered(name) {
    var inputs = document.getElementsByTagName("input");
    for (var i = 0; i < inputs.length; i++) {
        var input = inputs[i];
        if ((input.name === name) && (input.checked)) {
            return true;
        }
    }
    return false;
}

首先,在您的问题中,所有答案都具有相同的id='questionone'。您需要删除这些id

要检查是否选中了特定名称组,可以使用:

function isAnswered(name) {
    var inputs = document.getElementsByTagName("input");
    for (var i = 0; i < inputs.length; i++) {
        var input = inputs[i];
        if ((input.name === name) && (input.checked)) {
            return true;
        }
    }
    return false;
}

您是否尝试删除
?可能是重复的谢谢,我刚刚删除了它!但不幸的是没有效果。请尝试在单选按钮上设置id,如下所示:
您好,恐怕也没有帮助-代码现在无法验证。在它说没有值之前,即使有值。您是否尝试过remove
?可能是重复的谢谢,我刚刚删除了它!但不幸的是没有用。请尝试在单选按钮上设置id,如下所示:
嗨,恐怕这也没用-代码现在无法验证。在它说没有价值之前,即使有。谢谢@ClydeFrog。这就是我要告诉我们的代码如果没有选择选项一,它会正常工作。如果重新选择,它就不会被识别?我将尝试在脚本底部输入第二个命令来重新检查它。谢谢@ClydeFrog。这是我正在使用的代码,如果没有选择选项一,它会正常工作。如果重新选择,它就不会被重新选择gnised?我将尝试输入第二个命令以在脚本底部重新检查它。不幸的是,这不起作用,而是出现了一个错误,表示所有字段都未完成。谢谢!我已将代码从input.checked=='checked'更改为input.checked=true。它现在应该可以工作了。我在FF中进行了测试,但我将签入一些ot她的浏览器。你使用jQuery吗?实际上,为了安全起见,我再次将其更改为just(input.checked)。不幸的是,这不起作用,反而出现了一个错误,表示所有字段都未完成。谢谢!我已将代码从input.checked=='checked'更改为input.checked=true。现在应该可以工作了。我在FF中进行了测试,但我会在其他浏览器中进行检查。是否使用jQuery?实际上,为了安全起见,我再次将其更改为just(输入。选中)。
function isAnswered(name) {
    var inputs = document.getElementsByTagName("input");
    for (var i = 0; i < inputs.length; i++) {
        var input = inputs[i];
        if ((input.name === name) && (input.checked)) {
            return true;
        }
    }
    return false;
}
if (!isAnswered("Qone")) {
    alert("Question one must be completed");
    return false;
}