前端之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>
原文地址:https://www.cnblogs.com/jassin-du/p/8146138.html