1. 程式人生 > >js常用事件案例總結

js常用事件案例總結

一,完整表單的驗證

<div class="container">
    <label>Q Q</label><input type="text" id="inp1"><span></span><br/>
    <label>手機</label><input type="text" id="inp2"><span></span><br/>
    <label>郵箱</label><input type="text" id="inp3"><span></span><br/>
    <label>座機</label><input type="text" id="inp4"><span></span><br/>
    <label>姓名</label><input type="text" id="inp5"><span></span><br/>
</div>
<script>
    function $(id) {
        return document.getElementById(id);
    }

    var inpQQ = $("inp1");
    var inpMobile = $("inp2");
    var inpEmail = $("inp3");
    var inpTel = $("inp4");
    var inpName = $("inp5");

    //檢查 指定的輸入框 中的內容是否符合 指定的表示式
    function check(inp, regEx) {
        inp.onblur = function () {
            if (regEx.test(this.value)) {
                this.nextSibling.innerHTML = "正確";
                this.nextSibling.style.color = "green";
            } else {
                this.nextSibling.innerHTML = "錯誤";
                this.nextSibling.style.color = "red";
            }
        }
    }


    //QQ的規律 5-11位 開頭不為0
    //var regQQ = /^[^0]\d{4,10}$/;//不為零的數字
    var regQQ = /^[1-9]\d{4,10}$/;
    //手機的規律 11位 另外有規定號段
    //var regMobile = /^\d{11}$/;
    var regMobile = /^(13[0-9]|14[57]|15[0-9]|18[0-9])\d{8}$/;
    //郵箱的規律 
[email protected]
//var regEmail = /^\[email protected]\w$/; var regEmail = /^\w+([+-.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; //座機和姓名規律見之前的案例 var regTel = /^0\d{2,3}-\d{7,8}$/; var regName = /^[\u4e00-\u9fa5]{2,}$/; check(inpQQ, regQQ);//驗證QQ check(inpMobile, regMobile);//驗證手機 check(inpEmail, regEmail);//驗證郵箱 check(inpTel, regTel);//驗證座機 check(inpName, regName);//驗證姓名 </script>
二,密碼強度的驗證
<div class="container">
    <label>密碼</label>
    <input type="text" id="inp1" maxlength="16">
    <!--<input type="password" id="inp1" maxlength="16"/>-->
    <div class="pass-wrap">
        <em>密碼強度:</em>

        <em id="strength"></em>

        <div id="strengthLevel" class="strengthLv0"></div>
    </div>
</div>
<script>
    var inp1 = document.getElementById("inp1");
    var strength = document.getElementById("strength");
    var strengthLevel = document.getElementById("strengthLevel");
    var array = ['', '低', '中', '高'];
    inp1.onkeyup = function () {
        var level = 0;
        if (/[a-z]/.test(this.value)) {
            level++;//包含字母
        }
        if (/[0-9]/.test(this.value)) {
            level++;//包含數字
        }
        if (/[^a-z0-9]/.test(this.value)) {
            level++;//包含其他內容
        }
        if (this.value.length < 6) {
            level = 0;//密碼小於6位,沒輸入完
        }
        if (level > 3) {
            level = 3;
        }
        strength.innerHTML = array[level];
        strengthLevel.className = 'strengthLv' + level;
    };
</script>
三,回車切換案例
<input type="text"/><br/>
<input type="text"/><br/>
<input type="text"/><br/>
<input type="text"/><br/>
<input type="text"/><br/>
<input type="text"/><br/>
<script>
    //需求:在當前文字框中按下回車鍵 獲取下一個文字框 並讓其獲取焦點
    var inputs = document.getElementsByTagName("input");
    for (var i = 0; i < inputs.length; i++) {
        inputs[i].onkeyup = function (event) {
            //console.log(event.keyCode);//13
            if (event.keyCode === 13) {
                var next = this.nextElementSibling.nextElementSibling;//找到下一個文字框
                //讓他獲取焦點
                next.focus();
            }
        };
    }
</script>
四,放大鏡 按照比例移動大圖顯示效果
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .box {
            width: 350px;
            height: 350px;
            margin: 100px;
            border: 1px solid #ccc;
            position: relative;
        }

        .big {
            width: 400px;
            height: 400px;
            position: absolute;
            top: 0;
            left: 360px;
            border: 1px solid #ccc;
            overflow: hidden;
            display: none;
        }

        .mask {
            width: 175px;
            height: 175px;
            background: rgba(255, 255, 0, 0.4);
            position: absolute;
            top: 0;
            left: 0;
            cursor: move;
            display: none;
        }

        .small {
            position: relative;
        }

        .box img {
            vertical-align: top;
        }

        #bigBox img {
            position: absolute;
        }
    </style>
</head>
<body>
<div class="box" id="box">
    <div id="smallBox" class="small">
        <img src="images/001.jpg" width="350" alt=""/>

        <div id="mask" class="mask"></div>
    </div>
    <div id="bigBox" class="big">
        <img src="images/0001.jpg" id="bigImg" width="800" alt=""/>
    </div>
</div>
<script>
    var box = document.getElementById("box");
    var smallBox = document.getElementById("smallBox");
    var bigBox = document.getElementById("bigBox");
    var bigImg = document.getElementById("bigImg");
    var mask = document.getElementById("mask");
    //1.滑鼠經過小盒子 顯示遮罩和大盒子 滑鼠離開後隱藏
    smallBox.onmouseover = function () {
        mask.style.display = "block";
        bigBox.style.display = "block";
    };
    smallBox.onmouseout = function () {
        mask.style.display = "none";
        bigBox.style.display = "none";
    };
    //2.遮罩跟隨滑鼠座標
    //滑鼠在smallBox上移動的時候 獲取滑鼠在盒子中的座標 然後設定mask的位置
    smallBox.onmousemove = function (event) {
        var event = event || window.event;
        //獲取滑鼠在頁面中的座標
        var pageX = event.pageX || event.clientX + document.documentElement.scrollLeft;
        var pageY = event.pageY || event.clientY + document.documentElement.scrollTop;
        //獲取滑鼠在盒子中的座標
        //這裡不能用smallBox.offsetLeft因為smallBox的offsetParent是box
        //而smallBox到box的offsetLeft是0 所以這裡要用box.offsetLeft
        var boxX = pageX - box.offsetLeft;
        var boxY = pageY - box.offsetTop;
        //計算mask的座標
        var maskX = boxX - mask.offsetWidth / 2;
        var maskY = boxY - mask.offsetHeight / 2;
        //3.限制遮罩的運動範圍
        if (maskX < 0) {
            maskX = 0;
        }
        if (maskX > smallBox.offsetWidth - mask.offsetWidth) {
            maskX = smallBox.offsetWidth - mask.offsetWidth;
        }
        if (maskY < 0) {
            maskY = 0;
        }
        if (maskY > smallBox.offsetHeight - mask.offsetHeight) {
            maskY = smallBox.offsetHeight - mask.offsetHeight;
        }
        //console.log(maskX + "--" + maskY);
        //設定mask的位置
        mask.style.left = maskX + "px";
        mask.style.top = maskY + "px";
        //4.按照比例移動大圖

        //大圖能夠移動的總距離 = 大圖的寬度-大盒子的寬度
        var bigToMove = bigImg.offsetWidth - bigBox.offsetWidth;
        //mask能夠移動的總距離 = 小盒子的寬度-mask的寬度
        var maskToMove = smallBox.offsetWidth - mask.offsetWidth;
        //rate = 大圖能夠移動的總距離/mask能夠移動的總距離
        var rate = bigToMove / maskToMove;
        //大圖應該到的位置  = rate * mask當前的位置 (移動方向相反所以是負數)
        bigImg.style.left = -rate * maskX + "px";
        bigImg.style.top = -rate * maskY + "px";

    };

</script>
</body>
</html>