JS调用form的方法submit直接提交form的时候,submit事件不响应解决办法 _MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2153 | 回复: 0   主题: JS调用form的方法submit直接提交form的时候,submit事件不响应解决办法         下一篇 
unknsnow
注册用户
等级:上士
经验:272
发帖:78
精华:0
注册:2012-2-10
状态:离线
发送短消息息给unknsnow 加好友    发送短消息息给unknsnow 发消息
发表于: IP:您无权察看 2014-12-18 9:00:51 | [全部帖] [楼主帖] 楼主

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

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论