event.returnValue和return false的区别

event.returnValue和return false的区别

http://holdbelief.iteye.com/blog/301651

博客分类: JavaScript&Ajax
JavaScript IE Firefox 浏览器 Safari 
Js代码   收藏代码
  1. "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. "http://www.w3.org/1999/xhtml">  
  3. runcode  
  4. "Content-Type" content="text/html; charset=utf-8" />  
  5. "Author" content="Sheneyan" />  
  6.   
  7. "text/javascript">  
  8. function form1(){  
  9. event.returnValue = false;  
  10. }  
  11. function form2(){  
  12. return false;  
  13. }  
  14.   
  15.   
  16.   
  17. "form1()">    
  18. event.returnValue = false 
  19.     type="submit" />  
  20.   
  21. "return form2()"  
  22. return false的正确用法 
  23.     type="submit" />  
  24.   
  25. "form2()"  
  26. return false的错误用法 
  27.     type="submit" />  
  28.   
  29.   
  30.   

 

   三个提交的onsubmit属性都是想让表单提交之前验证,验证失败则不提交表单。第一、二两处做到了,第三出没做到。

   这个只有运行起来才能看到结果

   1处,表单没有提交

   2处,表单没有提交

   3处,表单提交了。这不是希望的

 

event.returnValue的作用就是:当捕捉到事件(event)时,做某些判断,如果判断失败,则阻止当前事件继续运行,这样讲您也许还不是特别理解,我再举一个例子,该例子达到的效果是:不能在一个输入框中输入小数。

FireFox浏览器:

Js代码   收藏代码
  1. "javascript" type="text/javascript">  
  2.     function test(event)  
  3.     {  
  4.         if(event.charCode == 46)  
  5.         {  
  6.             event.preventDefault();  
  7.         }  
  8.     }  
  9.   
  10.   
  11. "text" οnkeypress="test(event)"/>  

 

 IE浏览器:

Js代码   收藏代码
  1. "javascript" type="text/javascript">  
  2.     function test()  
  3.     {  
  4.         if(event.keyCode == 46)  
  5.         {  
  6.             event.returnValue = false;   
  7.         }  
  8.     }  
  9.   
  10. "text" οnkeypress="test()"/>  

 

 请注意两种浏览器的不同之处,在FireFox中event必须作为test()函数的如参传入,而IE不用,这个我在《JavaScript高级程序设计》一书中P233页,9.4.1章节找到如下答案:

    9.4 事件对象

    ...

    你也许已经猜到,IE和DOM是用两种不同的方法实现事件对象的。

 

    9.4.1

    在IE中,事件对象是window对象的一个属性event。也就是说,事件处理函数必须这样访问事件对象:

Js代码   收藏代码
  1. oDiv.onclick = function()  
  2. {  
  3.     var oEvent = window.event;  
  4. }  

   尽管它是window对象的属性,event对象还是只能在事件发生时访问。所有的事件处理函数执行完毕后,事件对象就被销毁。

   DOM 标准则说,event对象必须作为唯一的参数传给事件处理函数。所以,在DOM兼容的浏览器(如:Mozilla,Safari和Opera)中访问事件对象,要这么做:

 

Js代码   收藏代码
  1. oDiv.onclick = function  
  2. {  
  3.     var oEvent = arguments[0];  
  4.     ...  
  5. }  
  6.   
  7. 当然,可以直接命名参数,访问就更方便了:  
  8. oDiv.onclick = function(oEvent)  
  9. {  
  10.     ...  
  11. }  

 

你可能感兴趣的:(javascript)