不应该被滥用的 input 属性

简介: 前两天接到了一个需求:手机号、身份证、验证码 需要校验,检验规则包括长度、内容。想法是有一堆,但是不知道好使不好使,我们今天来整理一下咯。先来说说都有什么想法html 的标签属性typepatternmin、maxminlength、maxlengthjs 的事件监听value 获取值(vue 使用 v-model)@input 监听改变接下来就是我们大家都很期待的理想很丰满,现实很骨感环节。

html 的标签属性


type 输入类型


用于限制输入类型,我们这里只介绍我们有可能会有到的。每个 type 往往会带有一些特性,我们来看一下吧。


  1. date 输入日期的控件(年、月、日,不包括时间)。在支持的浏览器激活时打开日期选择器或年月日的数字滚轮。


  1. datetime-local 输入日期和时间的控件,不包括时区。在支持的浏览器激活时打开日期选择器或年月日的数字滚轮。


  1. email 编辑邮箱地址的区域。类似 text 输入,但在支持的浏览器和带有动态键盘的设备上会有确认参数和相应的键盘。


  1. number 用于输入数字的控件。如果支持的话,会显示滚动按钮并提供缺省验证(即只能输入数字)。拥有动态键盘的设备上会显示数字键盘。


  1. password 单行的文本区域,其值会被遮盖。如果站点不安全,会警告用户。


  1. search 用于搜索字符串的单行文字区域。输入文本中的换行会被自动去除。在支持的浏览器中可能有一个删除按钮,用于清除整个区域。拥有动态键盘的设备上的回车图标会变成搜索图标。


  1. tel 用于输入电话号码的控件。拥有动态键盘的设备上会显示电话数字键盘。


  1. text 默认值。单行的文本区域,输入中的换行会被自动去除。


  1. url 用于输入 URL 的控件。类似 text 输入,但有验证参数,在支持动态键盘的设备上有相应的键盘。


可以看到里面支持功能最多的就是动态键盘和验证,恰好这两个功能都是我们需要的。

pattern、min、max、minlength、maxlength 这些属性其实都是针对于特定的 type 。(这点没想到吧,好了,我们看下去)


测试地址:https://www.lilnong.top/static/html/sf-1190000037538101-html-input-attribute-type-pattern-min-max-minlength-maxlength.html


pattern


只支持 type 为 password, text, tel

检查控件值的正则表达式。pattern 必须匹配整个值,而不仅仅是某些子集。


min、max


只支持 type 为 number

这个属性指明了用户(最小、最大)(数字或日期时间)可以输入的值


minlength、maxlength


只支持 type 为 password、 search、 tel、 text、 url

这个属性指明了用户(最少、最多)可以输入的字符个数(按照Unicode编码方式计数)


如何获取校验状态


可以看到,上面有一些校验相关的内容,我们如何使用他呢?


  1. css 方法:
    :valid:invalid


  1. html 方法:
    表单提交的时候


  1. js 方法:
    ValidityState


获取输入的内容


好像没有比这个更简单的了,比较我们每天都在使用。


原生:el.value

Vue:v-model


但是事情没有这么简单,如果使用了html的检验,如果校验没有通过,获取的是空串


测试



type="number" 时,无法获取多余的.


22.png


type="number" 时,异常value无法获取


23.png


通过 validationMessage 和 validity 来获取当前异常的状态


bVcHH57.webp.jpg

相关文章
|
云安全 存储 供应链
云上快报 | 阿里云混合云再攀新高 斩获信通院2项大奖 高分通过电子四院云基准评测获引领级
随着企业数字化转型进程推进,各行业企业在数字基础设施一体化云平台、研运数字化治理、客户服务、人力资源、供应链等业务单元对数字化产品平台以及相关服务商数字化服务能力的需求逐渐明晰,如何选择可信的数字化服务成为企业推进自身数字化工作的关键。近日,阿里云混合云凭借业界领先的能力,屡获多个国家权威级机构的认证和大奖:高分通过电子四院云基准评测获引领级、混合云解决方案顺利通过可信云【混合云安全能力要求】增强级(最高级)认证、全国首批通过数字化可信服务评估的企业等,成为政企数字化转型的首选技术基础设施。
4245 0
云上快报 | 阿里云混合云再攀新高 斩获信通院2项大奖 高分通过电子四院云基准评测获引领级
|
SQL 自然语言处理 关系型数据库
MySQL的match匹配多个字符串的语法
【8月更文挑战第27天】MySQL的match匹配多个字符串的语法
472 67
|
Java UED
Java中String强转int:一种常见的错误和解决方法
在Java中将非数字字符串转换为整数会导致`NumberFormatException`。要解决这个问题,可以使用`try-catch`捕获异常,正则表达式验证数字格式,或利用异常信息提供错误提示。例如,`Integer.parseInt()`会因遇到非数字字符如`"123abc"`而抛出异常,但通过异常处理或正则`\\d+`可确保安全转换。记得在编程时避免直接强转,以防止程序异常中断。
|
10月前
|
数据采集 监控 搜索推荐
商业案例 I 数据中台用户场景案例
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
11月前
|
Java
BIO、NIO、AIO 有什么区别
BIO(阻塞I/O)模型中,服务器实现模式为一个连接一个线程;NIO(非阻塞I/O)使用单线程或少量线程处理多个请求;AIO(异步I/O)则是在NIO基础上进一步优化,采用事件通知机制,提高并发处理能力。
354 6
|
11月前
|
安全 前端开发 搜索推荐
如何创建一个网站?
网站建设是指创建和开发一个网站的过程,它涵盖了从规划、设计到实施、发布以及维护网站的整个过程。
3044 3
|
Ubuntu Linux Shell
10-23|如何查看linux当前时间
10-23|如何查看linux当前时间
|
机器学习/深度学习 自然语言处理 算法
AIGC技术的核心算法与发展趋势
【7月更文第27天】随着人工智能技术的迅速发展,AIGC技术已经逐渐成为内容创造领域的一个重要组成部分。这些技术不仅能够帮助人们提高工作效率,还能创造出以往难以想象的新颖内容。本文将重点介绍几种核心算法,并通过一个简单的代码示例来展示如何使用这些算法。
386 7
|
弹性计算
阿里云10M带宽收费价格表
阿里云10M带宽收费价格表,阿里云服务器上海地域10M带宽一年优惠价格5355元,10M带宽一个月525元,地域不同带宽价格不同,阿里云服务器网以华东1(上海)地域为例,5M及5M以下带宽按照23元一个月的价格收取,6M及6M以上公网带宽按照80元一个月的价格收取。阿里云百科使用阿里云价格计算器,计算一下阿里云10M公网带宽一个月价格和一年价格
290 0
BXA
|
算法 程序员 决策智能
动态规划详解背包问题及实践(附C++代码)
背包问题是一个经典的组合优化问题,它可以被抽象为一个把物品放入背包中的过程,以求最终背包中物品价值的最大化
BXA
1165 0