前言
首先我們要清楚returnValue是IE的一個屬性,如果設置了該屬性,它的值比事件句柄的返回值優先級要高,把它的值設置為false,可以取消發生事件源元素的默認動作;return false就是返回一個false值。
定義
returnValue:設置或獲取事件的返回值。
進一步可以這樣理解:event對象的returnValue屬性一般為true,表示腳本處理完自己的工作由元素來處理事件,通過該屬性可以取消事件處理程序中調用函數的默認操作。
作用
event.returnValue:當捕捉到事件(event)時會做一些判斷,判斷失敗,則會阻止事件繼續執行,可以達到的效果是“不能在輸入框中輸入非數字字符”,window.event.returnValue=false放在提交表單中的onclick事件中則不會提交表單,如果放到超鏈接中則不執行超鏈接。
<html> <head> <script language="text/javascript"> return_value(){ var charCode=event.keyCode; if(charCode<48||charCode>75){ alert("對不起,你輸入的不是數字字符!"); event.returnValue=false; } } </script> </head> <body> <textarea name="textarea" onKeyPress="return_value()"> </textarea> </body> </html>
如果沒有event.returnValue=false;這句填寫的字符不是數字也會在文本框顯示,加上這句,不是數字就不會在文本框中顯示,代碼會執行完但事件的操作不會繼續下去了。
return false:禁止一些瀏覽器的默認行為,由於原先默認的行為是ture,例如,<a>鏈接,點擊事件發生后,緊接着的默認事件就是跳轉鏈接,但是,在onclick=function(){return false;}之后,就可以對緊接着的默認行為禁止掉;
區別
這個event.returnValue與return false的區別是,在實戰中,對表單驗證而言,event.returnValue=fasle和return function(){return false}的效果是一樣的,都是先對表單的內容進行判斷,才決定是否執行下去,但是,這個return function(){return false}和function(){return false}又是有區別的,前者是在先對函數的內容的判斷上是否執行下去的,但是,后者則不會進行判斷就直接執行下去了
擴充
例如:onClick='return add_onclick()'與 onClick='add_onclick()'的區別
js在事件中調用函數時用return返回值實際上是對window.event.returnvalue進行設置。而該值決定了當前操作是否繼續。當返回的是true時,將繼續操作。當返回是false時,將中斷操作。
而直接執行時(不用return)。將不會對window.event.returnvalue進行設置,所以會默認地繼續執行操作
詳細說明如下:
當在 <a href="abc.htm" onclick="return add_onclick()">Open</a> 中
如果函數 add_onclick() 返回 true, 那么 頁面就會打開 abc.htm
否則, (返回 false), 那么頁面不會跳轉到 abc.htm, 只會執行你的 add_onclick() 函數里的內容. (add_onclick函數中控制頁面轉到 abc.htm除外)
而 <a href="abc.htm" onclick="add_onclick()">Open</a>
不管 add_onclick() 返回什么值, 都會在執行完 add_onclick 后打開頁面 abc.htm
注:onclick和href同時存在時,先執行onclick再執行href
另外補充:
1、onclick事件時就相當於onclick="return true/false"
function check(){ if(obj.value=="" ){ window.alert("不能為空!"); obj.focus(); return false; } return true; }
調用方法返回true時才提交表單,反之則不提交,這是submit按鈕
2、調用js函數不需要return,但是表單卻無法提交,所以在js函數中加上一句話
<script language="javascript"> function check(){ if(obj.value=="" ){ window.alert("不能為空!"); obj.focus(); return false; } document.myform.submit(); return true; } </script>
注:document.myform.submit();要在return true前