当用JS调用form的方法submit直接提交form的时候,submit事件不响应。为什么?
如
第一种情况: 一个input <input name="savein" type="button" class="button" value="保存" onClick="myform.submit();"> 提交表单:<form name="myform" method="post" onSubmit="return check();" action="/NetInvoice/bill/fpkj.do"/>
JS校验: function check(){ alert("aa"); if(document.getElementByIdx_x_x_x("sell_mc").value=="" || document.getElementByIdx_x_x_x("sell_mc").length==0){ alert('出售人姓名不能为空!'); document.getElementByIdx_x_x_x("sell_mc").focus(); return false; } return true; }
这里的alert信息并不能弹出,经查证,直接调用Form的submit()方法, 并不会触发onSubmit事 件, 如果改为<INPUT TYPE="submit" value="submit"> //这种方式能触发onFormSubmit事件 所以<input type="button" value="test" οnclick="document.myForm.submit();"> //这种方式不能触发onFormSubmit事件 解决办法:
在直接调用Form的submit()方法时,要注意先调用一下它的onsubmit()方法: <input type="button" value="test" οnclick="if(document.myForm.onsubmit()!=false)document.myForm.submit();" >
我自己解决的另外一种情况:
我写的一个一个页面挑战多个Action的js函数
function toSubmit(url) { var postform = document.getElementByIdx_x_x("pageForm"); if (postform) { postform.action = url; postform.target = "_self"; postform.submit(); } }
js的校正代码
<script type="text/javascript"> function subTest(){ var namec=document.getElementByIdx_x_x("kpxzmc").value; var namez=document.getElementByIdx_x_x("kpxzz").value; var name1=document.getElementByIdx_x_x("kpxzmc"); var name2=document.getElementByIdx_x_x("kpxzz"); if(namec.length==0){ alert("考评细则名称不能为空!"); name1.focus(); return false; } else if(namec=="请修改细则名"){ alert("必须修改细则名!"); name1.focus(); return false; } if(namez.length==0){ alert("考评细则值不能为空!"); name2.focus(); return false; } else if(namez==0){ alert("考评细则值不能为0!"); name2.focus(); return false; }else if(checkNum(namez)==false){ alert("请输入非零数值!"); name2.focus(); return false; } function checkNum(word){ //var re = /^[0-9]*[1-9][0-9]*$/; var i=0; for(i=0;i<word.length;i++) { if (parseInt(word.charAt(i))>=0 && parseInt(word.charAt(i))<=9) continue; return false; } return true; } } </script>
该页面的form 代码
<form method="post" id="pageForm" enctype="multipart/form-data" name="myForm" OnSubmit=" return subTest()">
跳转到不同Action 的代码
<input class="button" type="button" οnclick="if(document.myForm.onsubmit()!=false)toSubmit('kpxzAdd.action')" value="添加" /> <input class="button" type="button" οnclick="if(document.myForm.onsubmit()!=false)toSubmit('kpxzUpdate.action')" value="保存" />