拼图开发文档

表单验证 [原生]

应用HMTL5原生的表单及输入框属性,验证表单内容:

类型属性

除了常用的textpassword等外,在上一章中,我们还介绍了HTML5新增的输入类型,分别有:

类型说明
email电子邮件地址输入框
url网址输入框
number数值的输入框;可设置min、max、step属性
range特定值的范围的数值,以滑动条显示;可设置min、max、step属性
search用于搜索引擎,比如在站点顶部显示的搜索框
color颜色选择器
date日期选择器,同时包含month、week、time、datetime、datetime-local等类型

在原生的HTML5中,常用的表单及输入框验证属性有:

属性名说明
placeholder在输入框无内容时显示灰色提示
autofocus让input自动获取焦点
required设置表单元素为必填
pattern表单验证使用正则
novalidate该属性使用在form标签上,让设置了验证的表单可以直接提交 <form novalidate>…</form>
formnovalidate该属性使用在提交按钮上,让设置了验证的表单可以直接提交 <input type=”submit” formnonvalidate />
multiple多个值,以逗号分隔。
autocomplete部分输入框和form都可以设置自动提示 off关闭,on开启(默认是on)
maxlength最大字符长度
list数据列表,与datalist配合使用
min最小值
max最大值
step数字间隔

验证方法

根据上表的输入框类型和相关属性结合,验证输入内容。

必填

给输入框添加required属性,则此输入框为必填项。

    <form class="form">
      <div class="input-group">
        <label>必填</label>
        <div class="input-block">
          <input class="input" placeholder="必填输入框" type="text" required />
        </div>
      </div>
      <div class="form-button">
        <button type="submit" class="button">提交</button>
      </div>
    </form>
  

指定类型

指定输入框type的类型值,如emailnumber等:

    <form class="form">
      <div class="input-group">
        <label>邮箱</label>
        <div class="input-block">
          <input class="input" placeholder="输入框邮箱" type="email" />
        </div>
      </div>
      <div class="input-group">
        <label>网址</label>
        <div class="input-block">
          <input class="input" placeholder="输入框网址" type="url" required />
        </div>
      </div>
      <div class="form-button">
        <button type="submit" class="button">提交</button>
      </div>
    </form>
  

正则验证

在类型不满足的条件的情况下,可使用pattern属性,验证输入内容,pattern的值为正则验证。

    <form class="form">
      <div class="input-group">
        <label>必填</label>
        <div class="input-block">
          <input class="input" placeholder="5-7位大小写英文字母" type="text" required pattern="^[a-zA-Z]\w{5,7}$" />
        </div>
      </div>
      <div class="form-button">
        <button type="submit" class="button">提交</button>
      </div>
    </form>
  

取消验证

取消验证有2种方法,一是在form元素上添加novalidate属性值,二是在提交按钮上添加formnovalidate属性。

表单取消验证

    <form class="form" novalidate>
      <div class="input-group">
        <label>必填</label>
        <div class="input-block">
          <input class="input" placeholder="必填输入框" type="text" required />
        </div>
      </div>
      <div class="form-button">
        <button type="submit" class="button">提交</button>
      </div>
    </form>
  

按钮取消验证

    <form class="form">
      <div class="input-group">
        <label>必填</label>
        <div class="input-block">
          <input class="input" placeholder="必填输入框" type="text" required />
        </div>
      </div>
      <div class="form-button">
        <input type="submit" class="button" formnovalidate value="取消验证提交" />
        <input type="submit" class="button" value="验证提交" />
      </div>
    </form>
  

常用正则

我们整理了常用的正则表达式,供pattern使用:

用途正则
中文字符^[\u0391-\uFFE5]+$
英文字符^[A-Za-z]+$
整数^[-\+]?\d+$
正整数^[+]?\d+$
用户名^[a-z]\w{3,}$
手机^1(3|4|5|6|7|8|9)\d{9}$
电话^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{4,7}(\-\d{1,4})?$
IP^[\d\.]{7,15}$
QQ^[1-9]\d{4,10}$
邮编^[1-9]\d{5}$
身份证^\d{6}(18|19|20)?\d{2}(0[1-9]|1[0-2])(0[1-9]|[012]\d|3[0-3])\d{3}(\d|X)$
在普通的表单中,原生的验证满足大部份的需求,在一些比较复杂的表单验证,可使用下一章的JS验证方式。