js中 onsubmit="submitTest();" 阻止默认事件

<form action="index.jsp" method="post" onsubmit="submitTest();"> 

<script>

   function submitTest(){

      if(//做判断){

         return true;

      }else{

         return false;
      }

   }

</script>


      众所周知 οnsubmit="return false"这个表单不会不会被提交,但是onsubmit="submitTest();" 只是执行了submitTest方法,但它没有对返回值进行处理,只有事件的返回值是false时 才会阻止默认事件。所以表单依然会被提交。

      只有通过操作submitTest的返回值,才能正确控制表单是否提交。

     正确如下 οnsubmit="return submitTest()", 

js中onsubmit()是作为方法存在的,js是松散的语言,不像java是强类型语言,它可以有返回值,也可以没有返回值。

转自: http://www.qingdou.me/2854.html

用qwrap进行测试:
W(‘#testa’).click(function(){ return false;});// 这是一个标准的绑定事件方法


ie可以阻止,但标准浏览器 chrome firefox等却直接发生了跳转

因为标准浏览器使用 addEventListener 绑定事件 而该方法是没有返回值的, 没有返回值, 返回值当然不会是false所以继续执行href 。

而ie使用attachEvent的方法这个方法是有returnValue。参见 http://msdn.microsoft.com/en-us/library/ie/aa703898(v=vs.85).aspx

所以成功阻止了默认事件,

那么使用addEventListener绑定事件 如何阻止呢 ?

虽然addEventListener 不能有返回值 但是它有一个方法 preventDefault() 专门用来阻止默认事件

jquery可以例外 只是它悄悄的调用了preventDefault() 和 stopPropagation(),所以在ie和标准浏览器下都可以阻止默认的js事件。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值