之前在项目中为一个表单(from)编写onsubmit()脚本的时候,常常须要验证表单中数据的合法性,因此常会写道:<form action="/admin/addUser.do" method="post" onsubmit="validateForm();">,试图在validateForm()中return false来阻止表单的提交。实际上的效果是即便return false 表单 仍是会提交。后来发现 onsubmit="return validateForm()"就没有问题了。ide
今天在调试项目的bug时,遇到了表单提交前验证的问题,用一个普通的button按钮代替submit按钮,
在提交前触发这个button的onclick事件,在其事件中触发form的submit事件。问题出现了,如下是程序代码:post
<input type="button" name="save" value="保存" onclick="saveProject();"/>google
saveProject()方法以下:spa
function saveProject(){
var matCategory = document.getElementsByName("matCategory");
var flag = false;
for(i=0;i<matCategory.length;i++){
var checkbox = matCategory[i];
if(checkbox.checked == true){
flag = true;break;
}
}
if(flag){
proForm.submit();
return;
}
alert("请选择产品分类!");
}调试
却发现并无触发form的onsubmit方法,而是直接提交了。奇怪了,难道没有这种方式没法结合form的onsubmit方法吗?后来经过百度和google将saveProject方法改成以下:在表单提交前作了一下验证orm
function saveProject(){
var matCategory = document.getElementsByName("matCategory");
var flag = false;
for(i=0;i<matCategory.length;i++){
var checkbox = matCategory[i];
if(checkbox.checked == true){
flag = true;break;
}
}
if(flag){
if(document.proForm.onsubmit() == true){
proForm.submit();
}
return;
}
alert("请选择产品分类!");
}事件
这个问题耗费了我半个小时,所以记下来但愿下次再也不犯错,不得不说细节决定成功与否!get