web10(表單的本地驗證+Ajax)

表單的本地驗證

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表單的本地驗證</title>
</head>
<body>
<form>
    用戶名:<input type="text" name="uid" autocomplete="off"><span></span><br>
    密碼:<input type="password" name="pwd"><span></span><br>
    <button type="submit">提交</button>
</form>
<!--原生js-->
<script>
    var form = document.forms[0];

    /*間接表單提交時間
    * 1.e.preventDefault();
    * 2.返回一個false值
    * */

    form.onsubmit = function (e) {
        var key = true;
        if(form.uid.value.length <6){
            key = false;
        }
        if(form.pwd.value.length <8){
            key = false;
        }

        return key;
    };
     /*間接添加焦點事件*/
    form.uid.onfocus = function () {
        // 當函數是由事件觸發調用的,那麼this表示觸發事件的元素
        var tips = this.nextElementSibling;
        tips.innerHTML = '字母爲首的字母數字和下劃線6-18位';
        tips.style.color = 'black';
    };
    /*間接失去焦點事件*/
    form.uid.onblur = function () {
        var tips = this.nextElementSibling;
        var txt = this.value;
        /*如果用戶沒填寫信息*/
        if(!txt){
            tips.innerHTML = '';
        }else{
        	/*    / /表示正則表達式,i表示忽略大小寫    */
            if(/^[a-z][a-z0-9_]{5,17}$/i.test(txt)){
                tips.innerHTML = '正確';
                tips.style.color = 'green';
            }else{
                tips.innerHTML = '錯誤';
                tips.style.color = 'red';
            }
        }
    }
</script>
</body>
</html>

運行效果
在這裏插入圖片描述
將光標放入第一個輸入框中
在這裏插入圖片描述
當輸入錯誤值時
在這裏插入圖片描述
當輸入一個正確的值時
在這裏插入圖片描述

表單本地驗證2

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表單本地驗證2</title>
</head>
<body>
<form>
    <div>
        性別:
        <label>
            <input type="radio" name="gender" value="0"></label>
        <label>
            <input type="radio" name="gender" value="1"></label>
    </div>

    <div>
        愛好:
        <label>
            <input type="checkbox" name="hobby" value="1">
            音樂
        </label>
        <label>
            <input type="checkbox" name="hobby" value="1">
            美術
        </label>
        <label>
            <input type="checkbox" name="hobby" value="1">
            美食
        </label>
        <label>
            <input type="checkbox" name="hobby" value="1">
            購物
        </label>
        <label>
            <input type="checkbox" name="hobby" value="1">
            旅遊
        </label>
        <label>
            <input type="checkbox" name="hobby" value="1">
            健身
        </label>
        <label>
            <input type="checkbox" name="hobby" value="1">
            電子競技
        </label>
        最少選擇2個,最多選擇5個。
    </div>

    <div>
        <button type="submit">提交</button>
    </div>
</form>
<script>
    var form = document.forms[0];

    //單選框的本地控制:獲取選中項的值:兩種方法
    //方法1
    /* var value;
    for(var i=0;i<form.gender;i++){
        if(form.gender[i].checked){
            value = form.gender[i].value
        }
    }*/

    //方法2
    /* 方法1可以簡寫成單條語句
     form.gender.value;
     form.gender[i].value的全稱
     form.gender[form.gender.selectedIndex].value;
     //設置默認選中的語句
     form.gender[1].checked = true;
     document.write(
         //單選獲取選中項的值
         this.gender.value
     );
     //獲取單選框選中的值
    form.onsubmit = function () {
      alert(this.gender.value)
    }*/


    form.onsubmit = function () {
        var n = 0;
        //複選獲取選中項的值
        for (var i = 0; i < this.hobby.length; i++) {
            //表示複選框當前的選項被選中,選擇的個數加1
            if (this.hobby[i].checked) {
                n++;
            }
        }
        alert(
            /*打印複選選中的長度(個數)*/
            n
        );
        return false;
    };

    // 複選的本地控制
    for (var i = 0; i < form.hobby.length; i++) {
        form.hobby[i].onchange = function () {
            var n = 0;
            for (var i = 0; i < form.hobby.length; i++) {
                if (form.hobby[i].checked) {
                    n++;
                }
            }
            if (n < 2) {
                //當前程序強制選中
                this.checked = true;
            }
            if (n > 5) {
                //當前程序強制不選中
                this.checked = false;
            }
        }
    }

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

效果圖
在這裏插入圖片描述
當選中5個後,不會再選了
在這裏插入圖片描述
當選中的類型只有兩個是,第二個選中的值也取消不了

聯動菜單

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>聯動菜單</title>
</head>
<body>
<form action="">
    省:<select name="province" ></select>
    市:<select name="city" ></select>
    區:<select name="area" ></select>
</form>
<script>
    var form = document.forms[0]
    var p = form.province;
    var c = form.city;
    var a = form.area;
    var data = [
      {code:'610000',name:'陝西省'},
      {code:'610100',name:'西安市'},
      {code:'610300',name:'寶雞市'},
      {code:'610326',name:'眉縣'},
      {code:'612500',name:'商洛市'},
      {code:'610101',name:'碑林區'},
      {code:'610121',name:'長安區'},
      {code:'610102',name:'新城區'},
      {code:'410000',name:'河南省'},
      {code:'411100',name:'漯河市'},
      {code:'411121',name:'舞陽縣'},
      {code:'430000',name:'湖南省'},
      {code:'430100',name:'長沙市'},
      {code:'430181',name:'瀏陽市'}
    ];

    p.add(new Option('請選擇...',0));
    c.add(new Option('請選擇...',0));
    a.add(new Option('請選擇...',0));
// 留課後練習的內容,百度查找總結,js的數組遍歷的方法
    for(var i=0;i<data.length;i++){
      if(data[i].code.slice(-4) == '0000'){
        p.add(new Option(data[i].name,data[i].code));
      }
    }

    p.onchange = function () {
      c.length = 1;
      a.length = 1;
      var code = p.value.slice(0,2);
      for(var i=0;i<data.length;i++){
        if(
          data[i].code.slice(0,2) == code &&
          data[i].code.slice(2,4) != '00' &&
          data[i].code.slice(-2) == '00'
        ){
          c.add(new Option(data[i].name,data[i].code));
        }
      }
    }

    c.onchange = function () {
      a.length = 1;
      var code = c.value.slice(0,4);
      for(var i=0;i<data.length;i++){
        if(
          data[i].code.slice(0,4) == code &&
          data[i].code.slice(-2) != '00'
        ){
          a.add(new Option(data[i].name,data[i].code));
        }
      }
    }


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

在這裏插入圖片描述
在這裏插入圖片描述

下拉菜單的語法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>聯動菜單的語法說明</title>
</head>
<body>
<select id="aa" size="6">
    <option>1</option>
    <option>2</option>
    <option>3</option>
</select>
<script>
    var select = document.getElementById('aa');
    // select.options 代表select的所有option的集合
    // 新建:new Option(文本,值)
    var opt = new Option('新的','value');

    // 插入:
    // select.add(opt,null/index/option);
    //插入到索引值爲1的位置
    select.add(opt,1);
    //select.options 代表select的所有option的集合,
    select.add(opt,select.options[1]);

    /*改變*/
    //方式1
    // var opt2 = new Option('1.5','value');
    // select.options[1] = opt2;
    //方式2
    select.options[1].text = '1.6';
    select.options[1].value = '1.6';

    // 移除:刪除多個,刪除單個
    // select.length = 2;
    // select.options.length = 2;

    // select.remove(1)
    // select.options.remove(1);
    // select.options[1].remove();

    // 讀取選中項的值:
    select.value;
    select.options[select.options.selectedIndex].value;
    // 讀取選中項的文本:
    // select.text(沒有這種簡寫)
    select.options[select.options.selectedIndex].text;
    select[select.selectedIndex].text;
</script>
</body>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章