• 解读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前

  • 相关阅读:
    【LEETCODE】58、数组分类,适中级别,题目:238、78、287
    【LEETCODE】57、数组分类,适中级别,题目:969、442、695
    【LEETCODE】56、数组分类,适中级别,题目:62、63、1035
    【LEETCODE】55、数组分类,适中级别,题目:79、611、950
    【LEETCODE】54、数组分类,简单级别,题目:605、532
    【LEETCODE】53、数组分类,简单级别,题目:989、674、1018、724、840、747
    【LEETCODE】52、数组分类,简单级别,题目:717,661,746,628,643,849
    【LEETCODE】51、数组分类,简单级别,题目:581,830,1010,665
    【LEETCODE】50、数组分类,简单级别,题目:888,1013,896,485,448,697
    【LEETCODE】49、数组分类,简单级别,题目:566,1089
  • 原文地址:https://www.cnblogs.com/kunmomo/p/10183364.html
Copyright © 2020-2023  润新知