submit()不能触发obsubmit事件的解决办法

form表单通常由type="submit"的按钮触发,从点击到提交表单,要经历下面两个方法:

  1. onsubmit();
  2. submit();

 

有的网页因某些原因,放弃了标准的按钮、用type="button"的按钮代替,然后再手动触发submit(),如下:

<input type="button" value="提交" οnclick="document.form.submit();" />

 这时候,问题产生了,因为onsubmit()里的程序将不被执行!在DHTML手册里,多次提到了二者的关系:

submit Method 说明 写道
The submit method does not invoke the onsubmit event handler. Call the onsubmit event handler directly. When using Microsoft® Internet Explorer 5.5 and later, you can call the fireEvent method with a value of onsubmit in the sEvent parameter.

  

 所以,解决办法就是:在submit()之前,先手动触发onsubmit事件,请下面的完整代码(引用了jquery):

<html>
<head>
<script src="jquery-1.3.2.min.js"></script>
</head>
<body>

<form id="myform" action='/Personinfo/infoAction' method='post' name='Users_form' > 
生日:<input type='text' name="obj_Users[birth]" value='1971-01-01' />
<input type='button' value='更新个人资料' οnclick="foo();" />
</form>

</body>
</html>

<script language=javascript>
  //监听obsubmit事件
  $(window).load(function(){
    $("#myform").bind("submit", function() { alert('现在执行 onsubmit 事件!'); return false;})
  });

  function foo(){
    var result = false;
    //IE fire event
    form = document.Users_form;
    if (form.fireEvent) {
      result = form.fireEvent('onsubmit');
    //DOM2 fire event
    } else if (document.createEvent) {
      var ev = document.createEvent('HTMLEvents');
      ev.initEvent('submit', false, true);
      result = form.dispatchEvent(ev);
    }
    if(result) {document.Users_form.submit();}

  }
</script>

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值