解讀event.returnValue和return false


前言

首先我們要清楚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前


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM