【移动端】如何在移动端调出纯数字键盘
最近在做手机页面时,遇到数字输入的键盘的问题,之前的做法只是一刀切的使用 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有下面这几个目的 ...
最新文章
- Fastcgi 协议解析及 getpost 使用实例
- 小白webpack进行nodejs 前端打包配置
- 超小型php框架,MiniFramework
- 生成msk文件的用处_Yotta企业云盘“小”功能大用处企业办公好伙伴
- 毫米波雷达_最新的7个毫米波雷达应用案例
- latex公式对齐_Word 写公式最方便的方法
- javaweb(10) cookiesession
- android 阅读器上下滑动_科研党利器——文石13.3寸墨水屏阅读器BOOX Max3
- C#GDI绘制自定义字体
- vmin、vmax用处
- 跨境第三方支付有什么,怎么进行跨境支付?
- java自行车DH32,中国国际自行车嘉年华之Enduro、DH装备篇
- dns解析失败的处理办法
- html5_滑条等其他标签
- [转载]实时 Java,第 4 部分: 实时垃圾收集
- Yarn服务无法启动
- 司法背记一表通(吐血整理!!)
- 高并发系统设计:消息队列的三大作用:削峰填谷、异步处理、模块解耦
- **Hadoop Ubuntu系统搭建攻略全详细!!!附带Hadoop搭建成功后测试案例**
- oracle12c ora 12560,oracle11g报ora-12560:tns连接异常的解决方法