我的问题是我的表格<form name="enrollment" method="post" action="submit.php">
无法提交。我的提交按钮如下所示:<input class="buttons" type="submit" name="submit" onclick="return validate()" value="Submit" />
。
它调用此JavaScript函数:
// Returns true if there are no errors and false if there are errors
function validate() {
// Something is not returning true here so that the form is not being submitted
if ( !window.err_exist ) {
// No errors
return true;
}
// There are errors
alert("Errors exist in the form!");
return false;
}
变量window.err_exist
在函数中定义getReviewValues()
。在getReviewValues()
,我开始window.err_exist = false;
。然后,我使用表单的条件来验证表单:
// Name
var r_string = "Name: ";
if ( document.forms["enrollment"]["name"].value.trim() == "" ) {
r_string += "<span class=\"error\">This is a required field!</span>";
window.err_exist = true;
} else {
r_string += document.forms["enrollment"]["name"].value;
}
然后,在的结尾getReviewValues()
,我return r_string;
对表单验证的状态进行动态反馈。也就是说,类似的消息"Name: This is a required field!"
。
现在,如果我填写表格,但将某些内容留空,以便出现验证错误,则会收到警报"Errors exist in the form!"
,并且表格不会提交。伟大的!但是,当我填写表格以确保没有验证错误时,我没有收到错误消息。伟大的!但是,哦,不!该表格仍然没有提交。而且应该!
因此,由于我没有收到错误消息,因此执行路径必须在conditional中if ( !window.err_exist )
。我看到了这一点,因为函数随后返回,true
因此该函数永远不会发出消息。但是,如果返回true
,则应提交我的表格。因此它必须是return false
,因为表单尚未提交。但是,如果返回false
,则执行路径不能处于假定的条件中。如果真是这样,那么我会收到消息,但我未收到消息。这是一个矛盾。
有人有想法么?
在表单元素上使用“ onsubmit”事件,而不要在“提交”按钮上使用“ onclick”处理程序。例如:
<form onsubmit="return validate()">
此时,只要您的validate方法正确返回true或false,它就应该按照您的期望进行操作。
有关更好的参考,请参见http://www.w3schools.com/jsref/event_form_onsubmit.asp。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句