H5表单

作者: 心存美好 | 来源:发表于2022-05-03 23:37 被阅读0次

    H5表单

    1. HTML4 form表单复习

    input 表单type属性值

    1. text 单行文本输入框
    2. password 密码框(maxlength = ''")
    3. radio 单项选择(checked="checked")
    4. checkbox 多项选择
    5. button 按钮
    6. submit 提交
    7. file 文件上传
    8. reset 重置
    <body>
      <form action="/" method='post'>
        <!-- action="/"表单提交的地址  method = 'post' 为提交方式-->
        <div>用户名:<input type="text" name="username"><!--  name作用:form表单像后台发送数据时,form表单是必须传的 -->
        </div>
        <div>密码:<input type="password" name="pwd" id="" maxlength="5"></div>
        <!--maxlength最大值属性 -->
        <div>性别:<input type="radio" name="sex" id="" value="0" checked>男 <input type="radio" name="sex" id="" value="1">女
        </div>
        <!-- value值是传给后台 。原生js上只要加了checked属性不管值是什么都是true,默认属性值是它本身,没加checked属性值才是false。但在vue中:checked = "false",因为checked属性前加了:所以此时false就不是普通字符串了,变成布尔值false-->
        <div>爱好:<input type="checkbox" name="hobby" id="" value="youyong">游泳 <input type="checkbox" name="hobby" id=""
            value="youyong">读书</div>
        <div>文件:<input type="file" name="file" id=""></div>
        <div>
          <input type="button" value="按钮"> <!-- 没有默认事件,普通按钮 -->
          <input type="submit" value="提交"> <!-- 有默认事件,一旦点击会触发form表单,向默认路径发送请求 -->
          <input type="reset" value="重置">
          <!--有默认事件内容全部清空 -->
          <!-- 点按钮--》在控制台中查看->Network--》127.0.0.1--》点Header下拉就可以看到提交的数据字段名 字段值 -->
        </div>
      </form>
    </body>
    

    2. HTML5表单

    input表单type属性值新增

    2.1 emil

    限制用户输入的必须是Email类型

    <input type="email" name="" id="">
    
    2.2 url

    限制 用户输入必须为URL

    <input type="url" name="" id="">
    
    2.3 date

    限制用户输入必须为日期对象

    <input type="date" name="" id="">
    
    2.4 datetime-local

    显示完整日期

    <input type="datetime-local" name="local" />
    
    2.5 time

    限制用户输入必须为日期类型

    <input type="time" name="time" />
    
    2.6 month

    限制用户输入必须为月份类型

    <input type="month" name="month" />
    
    2.7 week

    限制用户输入必须为周类型

    <input type="week" name="week" />
    
    2.8 number

    限制用户输入必须为数字类型

    注意:不支持 "number" 类型的浏览器会改用标准的 "text" 输入框。

    <input type="number" name="number" />
    
    2.9 range

    生成一个滑动条(值为偶数)

    <input type="range" name="range" value="5" min="0" max="20" step="2" />
    
    2.10 search

    具有搜索意义的表单,

    <input type="search" name="search" />
    
    2.11 color

    生成一个颜色选择表单

    <input type="color" name="color" />
    
    2.12 tel

    显示电话号码

    注意: 不会自动验证电话号码格式, 原因在与世界各地电话号码格式差异很大

    <input type="tel" name="tel" />
    
    <body>
      <form action="/" method='post'>
        <div>email控件:<input type="email" name="" id=""></div>
        <!--有规则校验,不符合规则有提示 -->
        <div>网站控件:<input type="url" name="" id=""></div>
        <div>日期控件:<input type="date" name="" id=""></div>
        <div>完整日期控件:<input type="datetime-local" name="" id=""></div>
        <div>时间控件:<input type="time" name="" id=""></div>
        <div>月份控件:<input type="month" name="" id=""></div>
        <div>周控件:<input type="week" name="" id=""></div>
        <div>数字控件:<input type="number" name="" id=""></div>
        <div>滑动条控件:<input type="range" name="" id="" step="2" value="4"></div>
        <div>搜索控件:<input type="search" name="" id=""></div>
        <div>颜色控件:<input type="color" name="" id=""></div>
        <div>手机号码:<input type="tel" name="" id=""></div>
        <div>
          <input type="button" value="按钮">
          <input type="submit" value="提交">
          <input type="reset" value="重置">
        </div>
      </form>
    </body
    

    2. 表单验证

    <body>
      <form action="">
        <input type="text" id="ipt">
      </form>
      <script>
        ipt.oninput = function () {    //input的oninput事件,只要输入内容就触发
          console.log(11)
        }
        ipt.onchange = function () {  //onchange事件,输入完了按回车或其他特殊的键最后才触发
          console.log(222)
        }
      // 百度搜素时,联想关键字是oninput事件,最后的搜索结果是onchange事件
      </script>
    </body>
    
    <body>
      <form action="www.baidu.com">
        <input type="image" src="https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png" alt=""><!-- 图片按钮 -->
        <input type="button" value="提交">
        <input type="submit" value="提交">
        <input type="submit" value="提交给超春" formaction="www.chnradintor.com">
        <!--同一个form中,formaction可以将数据提交到不同的网址去 -->
      </form>
    </body>
    
    <body>
      <form action="aa" method="post">
     <input type="text" name="username" id="" required>    <!--一定要写name值,否则控制台Form Date中看不到。required表示必填,不写不能提交 -->
        <input type="submit" value="提交">
      </form>
    </body>
    
    表单方法Methods---select()
    <body>
      <form action="aa" method="post">
        <input type="text" name="username" id="ff" required>
        <input type="submit" value="提交">
      </form>
      <div id="bb">点击</div>
      <script>
        bb.onclick = function () {
          ff.select() // 表单方法Methods---select(),当bb被点击时,form表单选中内容
          let val = ff.value;
          console.log(val);
        }
      </script>
    </body>
    
      <style>
        /* input:enabled的css属性只要可以使用的input表单都采用 */
        input:enabled {
          color: red;
        }
      </style>
    </head>
    
    <body>
      <form action="aa" method="post">
        <input type="text" name="username" id="ff" required>
        <input type="email" name="" id="">
        <input type="submit" value="提交">
      </form>
      <div id="bb">点击</div>
    </body>
    
      <style>
        input:disabled{/* 表单被禁用采用的样式 */
          border-color:red;
        }
        input:required{ /* 表单必传采用的样式 */
          border-color:blue;
        }
      </style>
    </head>
    
    <body>
      <form action="aa" method="post">
        <input type="text" name="username" disabled id="ff"><!-- 禁用 -->
       <input type="email" name="" required id=""> <!-- 必传 -->
        <input type="submit" value="提交">
      </form>
      <div id="bb">点击</div>
    </body>
    
      <style>
        #add:checked~#aa {
          /* input不显示只是页面上看不到,还能使用checked伪类选择器,进而作用到紧邻的兄弟选择器*/
          background-color: pink;
        }
        #reduce:checked~#bb {
          background-color: yellow;
        }
      </style>
    </head>
    
    <body>
      <!-- 利用单选按钮的伪类选择器:checked模拟轮播的点击按钮思路-->
      <input type="radio" name="btn" id="add" style="display:none"> <!-- 此input不显示只是页面上看不到,还能使用checked -->
      <label for="add">增加</label>
      <div id="aa">aaaaa</div>
      <input type="radio" name="btn" id="reduce" style="display: none;">
      <label for="reduce">减少</label>
      <div id="bb">bbbbb</div>
    </body>
    
    2.1 invalid事件

    validity对象(valid查看验证是否通过)

    input.addEventListener("invalid", function(){
        console.log(this.validity)
    }, false);
    

    2.2 阻止默认验证

    ev.preventDefault()
    
    <body>
      <form action="aa" method="post">
        <input type="text" name="username" id="text" required>
        <input type="submit" value="提交">
      </form>
      <script>
        text.addEventListener('invalid', function (ev) {   //不输入内容直接提交会触发
          ev = ev || window.event;
          console.log(ev)//事件对象
          ev.preventDefault()//阻止默认事件,加上不再弹出"请输入内容"对话框
          console.log(this.validity)//validity是验证对象
          console.log(this.validity.valid)//没有输入内容,不符合验证必传,验证不通过值为false
          if (!this.validity.valid) {   //自定义的验证
            alert('未输入内容,验证不通过')
          }
        }, false)
      </script>
    </body>
    
    2.3 表单验证属性
    1. valueMissing : 输入值为空时为true
    <body>
      <form action="aa" method="post">
        <input type="text" name="username" id="text" required>
        <input type="submit" value="提交">
      </form>
      <script>
        text.addEventListener('invalid', function (ev) {   //不输入内容直接提交会触发
          ev = ev || window.event;
          console.log(this.validity.valueMissing)   
        }, false)
      </script>
    </body>
    
    1. typeMismatch : 控件值与预期类型不匹配为true
      <form action="aa" method="post">
        <input type="email" name="username" id="text" required>
        <input type="submit" value="提交">
      </form>
      <script>
        text.addEventListener('invalid', function (ev) {  
          ev = ev || window.event;
          console.log(this.validity.typeMismatch)   //输入的格式不符合就为true
        }, false)
      </script>
    

    3.patternMismatch : 输入值不满足pattern正则为true

    <body>
      <form action="aa" method="post">
        手机号码:<input type="text" id="text" pattern='/^1\d{10}$/'>
        <input type="submit" value="提交">
      </form>
      <script>
        text.addEventListener('invalid', function (ev) {
          ev = ev || window.event;
          console.log(this.validity.patternMismatch)   //输入的格式不符合就为true
        }, false)
      </script>
    </body>
    
    

    4.customError 不符合自定义验证

    <body>
      <form>
        <input type="text" name="username" id="text" placeholder="请输入用户名">
        <input type="submit" value="提交">
      </form>
      <script>
        text.oninput = function () {//输入内容触发这个事件
          if (this.value == '张三') {//成功了添加自定义验证器
            this.setCustomValidity('该用户已注册')
          } else {
            this.setCustomValidity('')
          }
        }
        text.addEventListener('invalid', function (ev) {//监听invalid,触发事件处理函数,是张三就执行这里
          ev = ev || window.event;
          alert(this.validity.customError)
        }, false)
      </script>
    </body>
    

    5.setCustomValidity(); 自定义验证(是否输入了某些值)

    相关文章

      网友评论

        本文标题:H5表单

        本文链接:https://www.haomeiwen.com/subject/yatwyrtx.html