获取表单元素、表单事件、表单方法、本地存储

一、获取表单元素

通过 form.name 可以获取到相对应的表单元素。

<form action="#" method="post" id="form">
    <p>用户名: <input type="text" name="username" /></p>
    <p>密码:<input type="password" name="userpass" /></p>
    <p>性别:<input type="radio" name="usergender" checked value="男" /><input type="radio" name="usergender" value="女" /></p>
    <p>爱好: 
        <input type="checkbox" name="userhobby" value="吃饭">吃饭
        <input type="checkbox" name="userhobby" value="睡觉">睡觉
        <input type="checkbox" name="userhobby" value="写代码">写代码
    </p>
    <p>
        简介:
        <textarea name="userinfo"></textarea>
    </p>
    <p>
        <button type="button">注册</button>
    </p>
</form>

<script>
    //1、通过ID获取表单元素
    var form = document.getElementById("form");
    //2、获取按钮完成点击动作
    var btn = document.getElementsByTagName("button")[0];
    //3、根据form.表单元素的name名称获取到具体元素
    var username = form.username;
    var userpass = form.userpass;
    var usergender = form.usergender;
    var userhobby = form.userhobby;
    var userinfo = form.userinfo;

    console.log(username, userpass, usergender, userhobby, userinfo);

    btn.onclick = function () {
    
    
        //4、点击之后获取每一个表单元素的值
        console.log(username.value) //用户名:admin
        console.log(userpass.value) //密码:123456
        console.log(usergender.value)  //性别:男
        var str = ""
        for (var i = 0; i < userhobby.length; i++) {
    
    
            if (userhobby[i].checked) {
    
    
                str += userhobby[i].value + ','
            }
        }
        str = str.substring(0, str.length - 1);//爱好 比较特殊 选中的全部获取 
        console.log(str) //吃饭,写代码
        console.log(userinfo.value) //简介 1234
    }

</script>

二、表单事件

  • 提交事件(form.onsubmit)

    form.onsubmit 事件在表单提交时触发,触发事件调用的函数中默认 return true,表示允许表单提交,

    return false 阻止表单提交。

    <body>
        <form action="#" method="post" id="form1">
            <p>用户名: <input type="text" name="username"/></p>
            <p>
                <!--button按钮中type属性有三个值:submit(默认)、reset、button-->
                <button>注册</button>
            </p>
        </form> 
        <script>
             //1、通过ID获取表单元素
             var form = document.getElementById("form1");
             //2、通过form.onsubmit事件来触发表单提交
             form.onsubmit = function(){
          
          
                 //3、通过form.name名称来获取对应的值,如果为空则不允许提交表单
                 var username = form.username.value;
                 if(username==""){
          
          
                   //4、判断表单元素中是否值为空
                     alert('用户名为空');
                   //5、阻止表单提交,也可以理解为阻止表单提交的默认行为(普通事件写法的阻止事件默认行为)
                     return false;
                 }
             }
        </script>
    </body>
    
  • 重置事件

    form.onreset 事件在表单重置时调用,return true 表示允许重置,return false 表示阻止表单重置。

    <body>
        <form action="#" method="post" id="form1">
            <p>用户名: <input type="text" name="username"/></p>
            <p>
                <button>注册</button>
                <button type="reset">重置</button>
            </p>
        </form> 
        <script>
             //1、通过ID获取表单元素
             var form = document.getElementById("form1");
             //2、通过form.onreset事件来触发表单重置
             form.onreset = function(){
          
          
                 //给出提交框向用户询问
                 var isTrue = confirm("是否需要重置表单?");
                 if(isTrue){
          
          
                     //如果点击的是确定按钮就重置表单
                    return isTrue;
                 }else{
          
          
                     //如果点击的试取消按钮就阻止表单重置
                    return false;
                 }
             }
        </script>
    </body>
    
  • 获取焦点(onfocus)、失去焦点(onblur)

    onfocus 事件:当表单元素获得焦点时调用,即光标进入到了输入框

    onblur事件:当表单元素失去焦点时调用,即光标离开了输入框

    事件名称 语法结构
    onfocus 表单元素.onfocus = function(){}
    onblur 表单元素.οnblur= function(){}

    举例:得到焦点给 文本框设置背景,失去则清除背景

    <form action="#" method="post" id="form">
        <p>用户名: <input type="text" name="username" /></p>
        <p>
            <button>注册</button>
            <button type="reset">重置</button>
        </p>
    </form>
    <script>
        var form = document.getElementById('form');
        //给文本框设置聚焦和失焦
        //先获取文本框
        var input = form.username;
        //设置聚焦事件
        //元素.onfocus = function(){}
        input.onfocus = function () {
          
          
            this.style.background = "pink";
        }
        //元素.onblur = function(){}
        input.onblur = function () {
          
          
            this.style.background = "";
        }
    </script>
    
  • 内容只要发生变化时触发的事件(实时监控)

    事件名 语法结构 兼容浏览器
    oninput 表单元素.oninput = function(){} 标准浏览器+IE9以上
    onpropertychange 表单元素.onpropertychange = function(){} ie8以及以下浏览器

    举例:密码文本框的输入密码的强度

    <form action="#" method="post" id="form">
        <p>用户名: <input type="text" name="username" /></p>
        <p>密码:<input type="password" name="userpass" />
            <span></span>
        </p>
        <p>
            <button>注册</button>
            <button type="reset">重置</button>
        </p>
    </form>
    <script>
        var form = document.getElementById('form');
        var span = document.getElementsByTagName("span")[0];
        form.userpass.oninput = inputchange;
        form.userpass.onpropertychange = inputchange;
        function inputchange() {
          
          
            if (this.value.length >= 12) {
          
          
                span.innerHTML = "强";
            } else if (this.value.length >= 9) {
          
          
                span.innerHTML = "中";
            } else if (this.value.length >= 6) {
          
          
                span.innerHTML = "弱";
            } else {
          
          
                span.innerHTML = "";
            }
        }
    </script>
    
  • 失去焦点时内容发生变化所触发的事件

    语法结构:表单元素.onchange = function(){}

    <form action="#" method="post" id="form">
        <p>用户名: <input type="text" name="username" /></p>
        <p>
            <button>注册</button>
            <button type="reset">重置</button>
        </p>
    </form>
    <script>
        var form = document.getElementById('form');
        form.username.onchange = function () {
          
          
            console.log(this.value);
        }
    </script>
    

三、表单方法(发生情况在按钮上)

  • 提交(submit)和重置(reset)

    举例:普通按钮实现提交重置表单的效果

    • 提交:表单.submit()
    <form action="#" method="post" id="form">
        <p>用户名: <input type="text" name="username" /></p>
        <p>
            <button type="button">注册</button>
        </p>
    </form>
    <script>
        //1、通过ID获取表单元素
        var form = document.getElementById("form");
        //2、获取按钮完成点击动作
        var btn = document.getElementsByTagName("button")[0];
        //3、按钮点击事件
        btn.onclick = function () {
          
          
            var username = form.username.value;
            if (username != "") {
          
          
                //4、获取表单文本框的值,如果不为空则进行提交
                form.submit();
            } else {
          
          
                alert('用户名不能为空')
            }
        }
    </script>
    
  • 重置:表单.reset()

  <form action="#" method="post" id="form">
      <p>用户名: <input type="text" name="username" /></p>
      <p>
          <button>重置</button>
      </p>
  </form>
  <script>
      //1、通过ID获取表单元素
      var form = document.getElementById("form");
      //2、获取按钮完成点击动作
      var btn = document.getElementsByTagName("button")[0];
      //3、按钮点击事件
      btn.onclick = function () {
    
    
          var isTrue = confirm("是否需要重置表单?");
          if (isTrue) {
    
    
              //如果点击的是确定按钮就重置表单
              form.reset();
          } else {
    
    
              //如果点击的试取消按钮就阻止表单重置
              return false;
          }
      }
  </script>
  • 获取焦点(focus())、失去焦点( blur() )

    <form action="#" method="post" id="form">
        <p>用户名: <input type="text" name="username" /></p>
        </p>
    </form>
    <script>
        //1、通过ID获取表单元素
        var form = document.getElementById("form");
        var btn = document.getElementById('btn');
        //2、通过form.name名称获取表单
        form.username.focus();
        // form.username.blur();
    </script>
    

四、localStorage(本地存储)

​ 用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去删除,localStorage 属性是只读的。

​ 存值:localStorage.key = value

​ 取值:localStorage.key

​ 【示例代码:】

localStorage.username = "admin";
localStorage.userpass = "123456";
console.log(localStorage)
console.log(localStorage.username)

案例:登录模拟数据存储到localStorage中,并比较结果,登录成功与否

涉及知识点:
i.JSON.stringify(javascript值) 方法用于将 JavaScript 值转换为 JSON 字符串。
ii.JSON.parse(JSON字符串) 方法用于将一个 JSON 字符串转换为对象。
<body>
	<form action="http://www.offcn.com" id="form">
        用户名:<input type="text" name="username"><br/>
        密码:<input type="password" name="userpass"/><br/>
        <button>登录</button>
    </form>
    
<script>
        var form = document.getElementById("form");
        var btn = document.getElementsByTagName("button")[0];
        var username = form1.username;
        var userpass = form1.userpass;
        form.onsubmit = function(){
    
    
            //还可以一次性存储多个值
            var obj = [{
    
    "username":"admin","userpass":"123456"},{
    
    "username":"张三","userpass":"123456"}]
            //JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串。
            var value = JSON.stringify(obj); //[{"username":"admin","userpass":"123456"},{"username":"张三","userpass":"123456"}]
            localStorage.arr = value;
            //JSON.parse() 方法用于将一个 JSON 字符串转换为对象。
            var data = JSON.parse(localStorage.arr);
            //console.log(data); //[{…}, {…}]

            var tag = true; //创建一个比对的假设条件
            for(var i = 0 ; i < data.length;i++){
    
    
                if(data[i].username != username.value && data[i].userpass != userpass.value){
    
    
                    tag = false;
                    break;
                }
            }
            if(tag==true){
    
    
                alert('用户登录成功');
                form.submit();
                return true;
            }else{
    
    
                alert('用户登录失败');
                return false;
            }
        }
    </script>
</body>

猜你喜欢

转载自blog.csdn.net/yangyanqin2545/article/details/112023493