最近在做手机页面时,遇到数字输入的键盘的问题,之前的做法只是一刀切的使用 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都是没有问题的。

【移动端】如何在移动端调出纯数字键盘相关推荐

  1. 移动端 -- 点击输入框默认弹出数字键盘

    应用场景:手机号.银行卡号等 <input type='tel' pattern='\d*' />

  2. 移动端开发input标签调用数字键盘

    先上代码: <input id="pp" type="number" maxlength="6" pattern="[0-9 ...

  3. 一个数字键盘引发的血案——移动端H5输入框、光标、数字键盘全假套件实现...

    https://juejin.im/post/5a44c5eef265da432d2868f6 为啥要写假键盘? 还是输入框.光标全假的假键盘? 手机自带的不用非得写个假的,吃饱没事干吧? 装逼?炫技 ...

  4. 手游页游和端游的服务端的架构与区别

    手游页游和端游的服务端本质上没区别,区别的是游戏类型. 类型1:卡牌.跑酷等弱交互服务端 卡牌跑酷类因为交互弱,玩家和玩家之间不需要实时面对面PK,打一下对方的离线数据,计算下排行榜,买卖下道具即可, ...

  5. web服务端和游戏服务端的区别

    最近几天在技术交流群里讨论到游戏服务端的一些技术细节,小说君发现有些做服务端的同学因为没有接触过游戏服务端,所以对游戏服务端产生了一些误解.因此今天的文章就从web服务端和游戏服务端的区别说起,简单介 ...

  6. java vue 服务端渲染_vue服务端渲染缓存应用详解

    服务端渲染简介 服务端渲染不是一个新的技术:在 Web 最初的时候,页面就是通过服务端渲染来返回的,用 PHP 来说,通常是使用 Smarty 等模板写模板文件,然后 PHP 服务端框架将数据和模板渲 ...

  7. ETH:Windows搭建ETH(区块链技术)利用Web端和小程序端两种方式调用ETH上的SC智能合约

    ETH:Windows搭建ETH(区块链技术)利用Web端和小程序端两种方式调用ETH上的SC智能合约 目录 1.Geth安装.配置文件.与ETH节点交互 1.1.下载并安装好geth客户端 1.2. ...

  8. 畅玩mt3单机游戏服务器维护,【梦幻西游】MT3仿端手工游戏服务端源码[教程+授权物品后台]...

    [梦幻西游]MT3仿端手工游戏服务端源码[教程+授权物品后台] 架设教程 系统:CentOS 6.8  64位 1.关闭防火墙 chkconfig iptables off service iptab ...

  9. PC端和移动APP端CSS样式初始化

    CSS样式初始化分为PC端和移动APP端 1.PC端:使用Normalize.css Normalize.css是一种CSS reset的替代方案. 我们创造normalize.css有下面这几个目的 ...

最新文章

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

热门文章

  1. TinyOS编程思想和Nesc基础语法
  2. 【c++/euler】套圈法解有向图的欧拉回路
  3. || 与 ?. 与 ??
  4. 交易额(GMV)的逻辑分析
  5. GC原理以及有哪几种工作方式
  6. 微信公众号 专辑(原页面模板) 功能
  7. HTML之判断checkbox复选框是否被选中
  8. vue 点击小眼睛密码显示隐藏
  9. EasyDSS流媒体服务器软件-搭建及二次开发接口对接说明示列
  10. CentOS安装Oracle数据库12C图文教程