JavaScript表单验证,在继续之前未完成完整脚本

JavaScript表单验证,在继续之前未完成完整脚本,javascript,forms,validation,Javascript,Forms,Validation,我在使用JavaScript表单验证脚本时遇到问题 基本上,如果没有给出答案,它应该将问题标记为红色,而不是提交表格。(它通过给问题加上类错误,增加了红色) 我的表单设置为通过另一个脚本发布,但我希望在发布之前处理验证,因此我使用onsubmit运行验证: <form name="questionnaire" action="my-questionnaire.php" onsubmit="return validateForm()" method="post"> 1) 为您的业务

我在使用JavaScript表单验证脚本时遇到问题

基本上,如果没有给出答案,它应该将问题标记为红色,而不是提交表格。(它通过给问题加上类
错误
,增加了红色)

我的表单设置为通过另一个脚本发布,但我希望在发布之前处理验证,因此我使用
onsubmit
运行验证:

<form name="questionnaire" action="my-questionnaire.php" onsubmit="return validateForm()" method="post">

1) 为您的业务租用车辆时,您特别关注哪些产品功能:
免费送货及收取

固定价格
2) 按重要性排列下列各项。(1=不太重要,5=非常重要) 1.
2
3
4
5

onsubmit
不允许通过返回
true
提交表单,但它可以通过返回
false
防止表单提交。如果您的
onsubmit
函数由于任何原因未能
返回false
,则表单提交将继续

在您的情况下,当
features
字段通过验证时,您的代码会产生错误。抛出此错误时,函数立即终止,
无重要性传递
字段的验证代码从来没有机会
返回false
(因此不会阻止提交)

错误在于在
else
块中使用
qFeature
,而没有定义它
qFeature
if
块中定义,但显然,如果
else
块正在运行,则
if
块没有运行。相反,将
qFeature
的定义移动到
if
的外部:

var qFeature = document.getElementById("qOne");

if (features == null || features == "") {
  qFeature.className = qFeature.className + " error";
  return false;
} else {
  qFeature.className = qFeature.className + " noerror";
}

在代码的下一部分中,您有一个与qFreeDel相同的错误。

您的代码包含很多错误

  • document.forms[“inventory”][“features”]
    返回一个节点数组,因此您无法获取它的
    属性,您需要遍历每个节点并检查它是否已选中
    属性
  • document.getElementById(“qTwoOne”)
    应该是
    qTwo
  • 某些变量仅在
    if
    块中定义,因此在
    else
    块中未定义
我重写了你的代码:
功能检查如果选择了RadioOption(节点阵列){
用于(nodeArray中的var i){
if(noderray[i].checked)返回true;
}
返回false;
}
window.validateForm=函数(){
var features Selected=CheckIfRadioOption Selected(document.forms[“问卷”][“功能”]);
var importanceSelected=CheckIfRadioOptionsSelected(document.forms[“问卷”][“无重要性传递”]);
var qOne=document.getElementById(“qOne”);
如果(!qOne.originalClass)qOne.originalClass=qOne.className;
qOne.className=qOne.originalClass+(已选择功能?“无错误”:“错误”);
var qTwo=document.getElementById(“qTwo”);
如果(!qTwo.originalClass)qTwo.originalClass=qTwo.className;
qTwo.className=qTwo.originalClass+(重要性选择?“无错误”:“错误”);
如果(!featuresSelected | |!importanceSelected)返回false;
返回true;
}
。错误{
颜色:红色;
}
诺埃罗先生{
颜色:绿色;
}

1) 为您的业务租用车辆时,您特别关注哪些产品功能:
免费送货及收取

固定价格
2) 按重要性排列下列各项。(1=不太重要,5=非常重要) 1.
2
3
4
5

如果您添加表单的其余部分,然后将其转换为代码段(ctrl+k),您将增加获得帮助的机会。@Mandera已添加表单。
document.forms[“问卷”][“无重要性传递”]
返回节点列表,它没有
属性。@Teemu你能建议一个替代方案,然后按照第一个问题工作吗?我感到困惑,因为第一个很好用。一个问题是qFeature在else部分没有定义:
else{qFeature.className=qFeature.className+“noerror”}