博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动手写个数字输入框1:input[type=number]的遗憾
阅读量:5947 次
发布时间:2019-06-19

本文共 1301 字,大约阅读时间需要 4 分钟。

前言

 最近在用Polymer封装纯数字的输入框,开发过程中发现不少坑,也有很多值得研究的地方。本系列打算分4篇来叙述这段可歌可泣的踩坑经历:

  1. 《动手写个数字输入框1:input[type=number]的遗憾》

  2. 《动手写个数字输入框2:起手式——拦截非法字符》

  3. 《动手写个数字输入框3:痛点——输入法是个魔鬼》

  4. 《动手写个数字输入框4:魔鬼在细节——打磨光标位置》

HTML5带来的福利-input[type=number]

input[type=number]为我们提供了如下特性:

  1. 限制只能输入[+-0-9.]这几个字符

  2. 输入法(IME)也无法输入非[+-0-9.]的字符

  3. 自动的表单验证

  4. minmax来限制数值的下限和上限;

  5. 提供stepUp和stepDown两个方法实现以编程方式控制数值的增加和减少;

  6. 移动设备上当它获得焦点时,会出现数字键盘;

  7. step设置点击右侧微调按钮的步长(默认为1),可设置为小数、整数或anystep的值除了影响微调按钮的步长外,还影响表单验证信息。

另外,设置为any是让表单验证不受精度限制而已,实际上步长依然为1。

遗憾了我的哥

 到这里我想大家都会发现怎么少了个精度设置呢?确实,input[type=number]并没有为我们提供设置精度的属性或方法。但遗憾的何止是这个呢?

  1. 木有精度精度设置;

  2. 不想要右侧的微调按钮还不行了...

  3. 点击微调按钮和调用stepUpstepDown设置数值确实被限制在minmax区间,但直接输入却不受限制...

  4. 可以输入多个小数点,如2012.12.12;

  5. 设置step=any后,chrome on android的数字键盘居然没了小数点按键。

  6. 设置step=any后,点击微调按钮步长为1,但调用stepUpstepDown则报

Uncaught DOMException: Failed to execute 'stepUp' on 'HTMLInputElement': This form element does not have an allowed value step.

隐藏右侧微调按钮不完全解决方法

Webkit和Gecko下可通过以下的CSS来隐藏右侧微调按钮

/* chrome */input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{    -webkit-appearance: none!important;    margin: 0;}/* Firefox */input[type=number]{    -moz-appearance: textfield;}

IE就没辙了:-(

总结

 也许你会问既然HTML5愿意为我们新增一个全新的input[type=number],为什么偏偏提供一个缺胳膊少腿的呢?只能说得哥情时失嫂意,既然它不满足,那就自己写写看咯:)

尊重原创,转载请注明来自: ^_^肥仔John

你可能感兴趣的文章
跑带宽度多少合适_跑步机选购跑带要多宽,你的身体早就告诉你了
查看>>
广平县北方计算机第一届PS设计大赛
查看>>
深入理解Java的接口和抽象类
查看>>
java与xml
查看>>
Javascript异步数据的同步处理方法
查看>>
iis6 zencart1.39 伪静态规则
查看>>
SQL Server代理(3/12):代理警报和操作员
查看>>
基于事件驱动的DDD领域驱动设计框架分享(附源代码)
查看>>
Linux备份ifcfg-eth0文件导致的网络故障问题
查看>>
2018年尾总结——稳中成长
查看>>
JFreeChart开发_用JFreeChart增强JSP报表的用户体验
查看>>
度量时间差
查看>>
通过jsp请求Servlet来操作HBASE
查看>>
crontab执行shell脚本日志中出现乱码
查看>>
Shell编程基础
查看>>
Shell之Sed常用用法
查看>>
3.1
查看>>
校验表单如何摆脱 if else ?
查看>>
JS敏感信息泄露:不容忽视的WEB漏洞
查看>>
分布式memcached服务器代理magent安装配置(CentOS6.6)
查看>>