• 前端之JavaScript 04 事件 (未全)


    一、事件类型

      常见的主要事件类型介绍如下:

    onfocus        元素获得焦点。               练习:输入框
    onblur         元素失去焦点。               应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.
    onchange       域的内容被改变。             应用场景:通常用于表单元素,当元素内容被改变时触发.(三级联动)
    
    onkeydown      某个键盘按键被按下。          应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
    onkeypress     某个键盘按键被按下并松开。
    onkeyup        某个键盘按键被松开。
    
    onload         一张页面或一幅图像完成加载。
    
    onmousedown    鼠标按钮被按下。
    onmousemove    鼠标被移动。
    onmouseout     鼠标从某元素移开。
    onmouseover    鼠标移到某元素之上。
    onmouseleave   鼠标从元素离开
    
    onselect       文本被选中。
    onsubmit       确认按钮被点击。

     二、onsubmit实例

      onsubmit主要用在form表单进行submit提交时执行的事件,即通过form标签绑定此事件,点击form下的submit按钮执行事件。当表单在提交时触发, 该属性也只能给form元素使用。应用场景::在表单提交前验证用户输入是否正确,如果验证失败,在该方法中我们应该阻止表单的提交。实例如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <form action="" class="form">
        <p><input type="text" class="inpt"><span class="error"></span></p>
        <input type="submit" >
    </form>
    <script>
        var ele_form=document.getElementsByClassName("form")[0];
        var ele_inpt=document.getElementsByClassName("inpt");
        var ele_error=document.getElementsByClassName("error")[0];
        function foo() {
            ele_error.innerHTML=""
        }
        ele_form.onsubmit=function () {                                         //通过父级form节点绑定onsubmit事件
            var inpt_value=ele_inpt.value;
            if(inpt_value.length>5 && inpt_value.length<12){
                
            }
            else{
                ele_error.innerHTML="输入内容长度需要大于5小于12";
                setTimeout(foo,3000);                                           //用定时器保证提示信息显示3秒后消失
                return false                                                    //阻止提交事件的发生
            }
        }
    </script>
    </body>
    </html>

    onchange实例

      onchange事件主要应用在select标签上,通过select标签绑定此事件,当选定一个select下面的内容,则会执行onchange事件下的内容,一个主要的应用就是三级联动,具体实例如下:

     select联动

    <!--定义和用法-->

    <!--option 元素定义下拉列表中的一个选项(一个条目)。-->

    <!--浏览器将 <option> 标签中的内容作为 <select> 标签的菜单或是滚动列表中的一个元素显示。-->

    <!--option 元素位于 select 元素内部。-->

    <!DOCTYPE html>
    <html lang="zh—CN">
    <head>
        <meta charset="UTF-8">
        <title>select联动</title>
    </head>
    <body>
    <select name="" id="s1" onchange="loadData();">
        <option value="">请选择省份</option>
    </select>
    
    <select name="" id="s2">
        <option value="">请选择省份</option>
    </select>
    
    
    <script>
        var s1Ele = document.getElementById("s1");
    
        var data = {"四川": ["成都", "攀枝花", "湘潭"],"广东": ["深圳", "梅州", "东莞"], 
    "江西": ["宜春", "南昌", "景德镇"]}; // 把data里面的key都拿出来,生成option标签,添加到s1这个select var str = ""; for (var key in data) { console.log(key); // 2 .往生成标签里加 var s = "<option>" + key + "</option>"; console.log(s); str += s; } console.log(str); s1Ele.innerHTML = str; function loadData() { var s2Ele = document.getElementById("s2"); s2Ele.options.length = 0; // 清空select 下面的option // 把data里面的key都拿出来,生成option标签, // 添加到s1这个select var indexValue = s1Ele.selectedIndex; var optionEles = s1Ele.options; var key = optionEles[indexValue].innerText; var data2 = data[key]; for (var i=0; i<data2.length;i++) { var optionEle = document.createElement("option"); optionEle.innerText = data2[i]; s2Ele.appendChild(optionEle); } } </script> </body> </html>

    定时器例子

    <!DOCTYPE html>
    <html lang="zh—CN">
    <head>
        <meta charset="UTF-8">
        <title>定时器示例</title>
    </head>
    <body>
    <input type="text" id="i1">
    
    <input type="button" value="开始" onclick="start()">
    <input type="button" value="结束" onclick="end()">
    
    <script>
        var t;
        function f() {
            // 获取时间
            var dateObj = new Date();
            // 获取i1 标签
            var i1Ele = document.getElementById("i1");
            i1Ele.value=dateObj.toLocaleString();
    
        }
    
    
        //每隔一秒就执行一次f()
        function start() {
            f();
            // 之创建一个定时器,有定时器的话我就不创建
            if(t === undefined){  // 如果没有就创建t
                t = setInterval(f,1000); // 1000为毫秒
            }
        }
    
    
        // 停止计时
        function end() {
            clearInterval(t);
            t = undefined;  // 清空,没请空,t还会有值,停止就启动不了
        }
    </script>
    </body>
    </html>

    onkeydown及onselect实例

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <input type="text" id="d1">
    <script>
        var ele=document.getElementById("d1");
    //  onkeydown事件:某个键盘键被按下,执行事件
        ele.onkeydown=function (event) {
            console.log(event.keyCode);
            if(event.keyCode==13){   //event.keyCode==13为回车键
                alert(123)
            }
        };
    //  onselect 事件:文本被选中时执行事件
        ele.onselect=function () {
            alert(1234)
        }
    </script>
    </body>
    </html>

    onfocus及onblur实例

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <input type="text" id="inp1" value="请输入用户名">
    <script>
        var ele_inp=document.getElementById("inp1");
        //onfocus事件
         ele_inp.onfocus=function () {   //当点中输入框,默认value值消失
                  this.value="";
         };
         //onblur事件
         ele_inp.onblur=function () {    //当点中非输入框区域,输入框重新赋上默认值
             if(!this.value.trim()){
                  this.value="请输入用户名"
             }
         }
    </script>
    </body>
    </html>

    mouseout与mouseleavequbie

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
             #container{
                  300px;
             }
    
            #title{
                background-color: darkblue;
                color: white;
                line-height: 30px;
                text-align: center;
            }
    
            #list .item1{
                background-color: gray;
                line-height: 20px;
            }
            #list .item2{
                background-color: #f0ad4e;
                line-height: 20px;
            }
            #list .item3{
                background-color: green;
                line-height: 20px;
            }
    
            .hide{
                display: none;
            }
        </style>
    </head>
    <body>
    <div id="container">
            <div id="title">使用了mouseout事件↓</div>
            <div id="list" class="hide">
                    <div class="item1">第一行</div>
                    <div class="item2">第二行</div>
                    <div class="item3">第三行</div>
            </div>
    </div>
    
    
    <script>
        var ele_title=document.getElementById("title");
        var ele_list=document.getElementById("list");
        var ele_container=document.getElementById("container");
        
      // 1.不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件。
    
      // 2.只有在鼠标指针离开被选元素时,才会触发 mouseleave 事件。
    
        ele_title.onmouseover=function () {
            ele_list.classList.remove("hide");
        };
    
        ele_container.onmouseout=function () {
            ele_list.classList.add("hide");
        };
    
        ele_container.onmouseleave=function () {
            ele_list.classList.add("hide");
        }
    </script>
    
    </body>
    
    </html>
  • 相关阅读:
    # ConfigureAwait常见问题解答
    # Oracle 常用语句
    # C# 中的Task创建指南
    ASP.NET Core Web API 跨域(CORS) Cookie问题
    Order by 优化
    VMware 安装 CentOS 7
    ThreadLocal 内存泄漏问题深入分析
    Zookeeper 如何保证分布式系统数据一致性
    Redis 5.0 安装
    Redisson 实现分布式锁的原理分析
  • 原文地址:https://www.cnblogs.com/jassin-du/p/8146138.html
Copyright © 2020-2023  润新知