我计划显示/隐藏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) {
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();">
答案 0 :(得分:1)
它可能会产生错误,因此永远不会返回任何内容。假设您使用的是Firefox,请检查一下javascript控制台吗?
我看到这里看起来像一个问题,你在两次调用nameEmpty() - 一次使用字段,另一次使用(推测?)布尔值:
var name = nameEmpty(document.getElementById("annonsera_name")); // Returns boolean
if (nameEmpty(name)){return false;} // Tries to pass boolean back into nameEmpty?
答案 1 :(得分:0)
也许有点偏离主题,但这里有......
你应该考虑JQuery Validation,它很好,干净且易于实现。我已经做了几次,从那以后再也没有回头。它确实胜过你使用的手动验证方法:)
查看example,确实没有太多代码要编写,以便进行验证。
在您的示例中(未经测试):
<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>
通过dhtml和css还有很多自定义方法,请查看options。