最近在做手机页面时,遇到数字输入的键盘的问题,之前的做法只是一刀切的使用 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. MySQL探秘(四):InnoDB的磁盘文件及落盘机制(持久性)
  2. H5移动页面的touch事件与点击穿透问题
  3. python计算单词长度_Python - 按长度打印单词
  4. C++基础12-类和对象之操作符重载-string练习
  5. 时间轴的实现(简单到爆炸)
  6. 大数据该如何运行与分析
  7. curl post json_curl 模拟 GETPOST 请求,以及 curl post 上传文件
  8. InDesign 教程,如在使用的不同类型的框架?
  9. Apache Flink 不止于计算,数仓架构或兴起新一轮变革
  10. 尚硅谷李玉婷老师mysql课程--数据库和SQL概述
  11. CVBS视频信号解析
  12. Google Earth Engine(GEE)计算雷达植被指数RVI
  13. Matlab图像特征提取的数学原理及实现
  14. mac如何使用adb安装apk
  15. python源文件是什么意思_.py文件是什么?
  16. 网站被黑被劫持跳转到其他网站该如何解决
  17. 天气预报API接口大全
  18. 洞见2021 中国企业服务年会高清大图来啦~!请查收
  19. JavaSE基础练习题
  20. Pycharm导入tabula模块包

热门文章

  1. 在破公司上班的最后一天,老板让我给他开发一个拨号程序——初级版(Java实现)
  2. ACM模板(满注释模板!)
  3. 月入万元和月入千元,要认清,做自媒体和抖音哪个更适合新手?
  4. 转:首都经贸的统计学课程
  5. 使用Nightwatch进行E2E测试
  6. EDIUS遮罩怎么用?
  7. ym——学习就是那么回事~!
  8. 从零搭建一个无人驾驶系统 —— 线控底盘介绍
  9. 【实用工具】QQ自动发消息
  10. 投资127亿!深圳,再添一所985