Javascript 为什么此表单在返回后仍然提交错误?
我计划显示/隐藏div以验证表单。 但是div只显示一瞬间,然后表单就被提交了 你知道为什么吗 代码如下:Javascript 为什么此表单在返回后仍然提交错误?,javascript,html,Javascript,Html,我计划显示/隐藏div以验证表单。 但是div只显示一瞬间,然后表单就被提交了 你知道为什么吗 代码如下: function validateForm() { var name = nameEmpty(document.getElementById("annonsera_name")); if (nameEmpty(name)){return false;} return false; } function nameEmpty(fld){ if (fld.value==0) {
function validateForm() {
var name = nameEmpty(document.getElementById("annonsera_name"));
if (nameEmpty(name)){return false;}
return false;
}
function nameEmpty(fld){
if (fld.value==0) {
document.getElementById("annonsera_nameempty_error").style.display='block';
document.getElementById("annonsera_namenotvalid_error").style.display='none';
document.getElementById("annonsera_name").focus();
return false;
}
else if (fld.value.match(alphaExp)) {
document.getElementById("annonsera_namenotvalid_error").style.display='block';
document.getElementById("annonsera_name").focus();
document.getElementById("annonsera_nameempty_error").style.display='none';
return false;
}
document.getElementById("annonsera_nameempty_error").style.display='none';
document.getElementById("annonsera_namenotvalid_error").style.display='none';
return false;
}
以下是表格:
<form name="annonsera" id="annonsera" method="post" enctype="multipart/form-data" onSubmit="return validateForm();">
它可能正在生成错误,因此从不返回任何内容。假设您使用的是Firefox,您是否检查过javascript控制台 我看到这里出现了一个问题,您两次调用nameEmpty(),一次调用一个字段,另一次调用一个(大概?)布尔值:
var name = nameEmpty(document.getElementById("annonsera_name")); // Returns boolean
if (nameEmpty(name)){return false;} // Tries to pass boolean back into nameEmpty?
也许有点离题,但接下来 你应该认真考虑一下,它很好,很干净,很容易实现。我做过几次,从那以后就再也没有回头。它肯定比您使用的手动验证方法要好:) 检查一下,确实没有那么多代码需要编写,以进行验证 在您的示例中(未测试):
$(文档).ready(函数(){
$(“#annonsera”).validate({
规则:{
annonsera_名称:{
要求:正确,
最小长度:1
}
},
信息:{
annonsera_名称:{
必填项:“您需要填写您的姓名”,
minlength:jQuery.format(“至少需要{0}个字符!”)
}
}
})
});
还有很多通过dhtml和css进行定制的方法,请查看。您可能在某个地方遇到了javascript错误,导致函数中止并导致表单像往常一样提交。JQuery验证还远远不够干净。自过去18个月以来,它仍然有很多bug,并且已经发生了变化,几乎没有什么东西是不兼容的。这是一段非常好用的代码,但并不漂亮和干净。就我所使用的范围而言,它非常可靠,我仍然认为编写验证规则的声明式方式胜过任何一天的手动验证。我还没有发现任何bug,但也没有查找它们。查看我看到有30个活动bug报告。考虑到他们的平均报告生命周期(15周5天),这一数字相当大。尽管如此,我仍然推荐JQuery验证,只要bug不会影响您的解决方案。
<script>
$(document).ready(function(){
$("#annonsera").validate({
rules: {
annonsera_name: {
required: true,
minlength: 1
}
},
messages: {
annonsera_name: {
required: "You need to write your name",
minlength: jQuery.format("At least {0} characters required!")
}
}
})
});
</script>