当用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" onclick="document.myForm.submit();"> //这种方式不能触发onFormSubmit事件
解决办法:
在直接调用Form的submit()方法时,要注意先调用一下它的onsubmit()方法:
<input type="button" value="test" onclick="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"
onclick="if(document.myForm.onsubmit()!=false)toSubmit('kpxzAdd.action')" value="添加" />
<input class="button" type="button"
onclick="if(document.myForm.onsubmit()!=false)toSubmit('kpxzUpdate.action')" value="保存" />
--转自