【移动端】如何在移动端调出纯数字键盘
最近在做手机页面时,遇到数字输入的键盘的问题,之前的做法只是一刀切的使用 type=“tel”,不过一直觉得九宫格的电话号码键盘上的英文字母太碍事了。于是想要尝试其它的实现方案,最终的结论却令人沮丧。不过也趁机详细了解了下pattern这个属性。
type=“tel” 和 type=“number” 的区别
这里还是先那么先交代一下最初遇到的问题。其实无论是tel还是number都不是完美的:
type=“tel”
优点是iOS和Android的键盘表现都差不多
缺点是那些字母好多余,虽然我没有强迫症但还是感觉怪怪的啊。
type=“number”
优点是Android下实现的一个真正的数字键盘
缺点一:iOS下不是九宫格键盘,输入不方便
缺点二:旧版Android(包括微信所用的X5内核)在输入框后面会有超级鸡肋的小尾巴,好在Android 4.4.4以后给去掉了。
不过对于缺点二,我们可以用webkit私有的伪元素给fix掉:
input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button { -webkit-appearance: none; appearance: none; margin: 0; }
pattern属性
pattern用于验证表单输入的内容,通常HTML5的type属性,比如email、tel、number、data类、url等,已经自带了简单的数据格式验证功能了,加上pattern后,前端部分的验证更加简单高效了。
显而易见,pattern的属性值要用正则表达式。
实例
简单的数字验证
数字的验证有两个:
<input type="number" pattern="\d">
<input type="number" pattern="[0-9]*">
对表单验证来说,这两个正则的作用是一样的,表现的话差异就很大:
iOS中,只有[0-9]*才可以调起九宫格数字键盘,\d 无效
Android 4.4以下(包括X5内核),两者都调起数字键盘;
Android 4.4.4以上,只认 type 属性,也就是说,如果上面的代码将 type=“number” 改为 type=“text” ,将调起全键盘而不会是九宫格数字键盘。
常用的正则表达式
pattern的用法都一样,这里不再啰嗦各种详细写法了,只是列出来一些常用的正则就好了:
信用卡 [0-9]{13,16}银联卡 ^62[0-5]\d{13,16}$Visa: ^4[0-9]{12}(?:[0-9]{3})?$万事达:^5[1-5][0-9]{14}$QQ号码: [1-9][0-9]{4,14}手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$身份证:^([0-9]){7,18}(x|X)?$密码:^[a-zA-Z]\w{5,17}$ 字母开头,长度在6~18之间,只能包含字母、数字和下划线强密码:^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间7个汉字或14个字符:^[\u4e00-\u9fa5]{1,7}$|^[\dA-Za-z_]{1,14}$
浏览器支持
很不幸,pattern的浏览器支持很惨:
但是如果只是如文章开头提到的改数字键盘的话,iOS和Android都是没有问题的。
【移动端】如何在移动端调出纯数字键盘相关推荐
- 移动端 -- 点击输入框默认弹出数字键盘
应用场景:手机号.银行卡号等 <input type='tel' pattern='\d*' />
- 移动端开发input标签调用数字键盘
先上代码: <input id="pp" type="number" maxlength="6" pattern="[0-9 ...
- 一个数字键盘引发的血案——移动端H5输入框、光标、数字键盘全假套件实现...
https://juejin.im/post/5a44c5eef265da432d2868f6 为啥要写假键盘? 还是输入框.光标全假的假键盘? 手机自带的不用非得写个假的,吃饱没事干吧? 装逼?炫技 ...
- 手游页游和端游的服务端的架构与区别
手游页游和端游的服务端本质上没区别,区别的是游戏类型. 类型1:卡牌.跑酷等弱交互服务端 卡牌跑酷类因为交互弱,玩家和玩家之间不需要实时面对面PK,打一下对方的离线数据,计算下排行榜,买卖下道具即可, ...
- web服务端和游戏服务端的区别
最近几天在技术交流群里讨论到游戏服务端的一些技术细节,小说君发现有些做服务端的同学因为没有接触过游戏服务端,所以对游戏服务端产生了一些误解.因此今天的文章就从web服务端和游戏服务端的区别说起,简单介 ...
- java vue 服务端渲染_vue服务端渲染缓存应用详解
服务端渲染简介 服务端渲染不是一个新的技术:在 Web 最初的时候,页面就是通过服务端渲染来返回的,用 PHP 来说,通常是使用 Smarty 等模板写模板文件,然后 PHP 服务端框架将数据和模板渲 ...
- ETH:Windows搭建ETH(区块链技术)利用Web端和小程序端两种方式调用ETH上的SC智能合约
ETH:Windows搭建ETH(区块链技术)利用Web端和小程序端两种方式调用ETH上的SC智能合约 目录 1.Geth安装.配置文件.与ETH节点交互 1.1.下载并安装好geth客户端 1.2. ...
- 畅玩mt3单机游戏服务器维护,【梦幻西游】MT3仿端手工游戏服务端源码[教程+授权物品后台]...
[梦幻西游]MT3仿端手工游戏服务端源码[教程+授权物品后台] 架设教程 系统:CentOS 6.8 64位 1.关闭防火墙 chkconfig iptables off service iptab ...
- PC端和移动APP端CSS样式初始化
CSS样式初始化分为PC端和移动APP端 1.PC端:使用Normalize.css Normalize.css是一种CSS reset的替代方案. 我们创造normalize.css有下面这几个目的 ...
最新文章
- MySQL探秘(四):InnoDB的磁盘文件及落盘机制(持久性)
- H5移动页面的touch事件与点击穿透问题
- python计算单词长度_Python - 按长度打印单词
- C++基础12-类和对象之操作符重载-string练习
- 时间轴的实现(简单到爆炸)
- 大数据该如何运行与分析
- curl post json_curl 模拟 GETPOST 请求,以及 curl post 上传文件
- InDesign 教程,如在使用的不同类型的框架?
- Apache Flink 不止于计算,数仓架构或兴起新一轮变革
- 尚硅谷李玉婷老师mysql课程--数据库和SQL概述
- CVBS视频信号解析
- Google Earth Engine(GEE)计算雷达植被指数RVI
- Matlab图像特征提取的数学原理及实现
- mac如何使用adb安装apk
- python源文件是什么意思_.py文件是什么?
- 网站被黑被劫持跳转到其他网站该如何解决
- 天气预报API接口大全
- 洞见2021 中国企业服务年会高清大图来啦~!请查收
- JavaSE基础练习题
- Pycharm导入tabula模块包