JS调用form的方法submit直接提交form的时候,submit事件不响应解决办法

当用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="保存" />

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值