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

来源:互联网 发布:java人才培训中心 编辑:程序博客网 时间:2024/06/07 19:16

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

<script>

   function submitTest(){

      if(//做判断){

         return true;

      }else{

         return false;
      }

   }

</script>


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

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

     正确如下 onsubmit="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事件。


0 0
原创粉丝点击