好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

html5教程-HTML5 number类型文本框step属性的验证机制

小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

&nbs p;

我在下一盘很大的棋,本文只是其中的一个棋子。

需要提前知道的:

目前而言,对 step 雄起的浏览器为IE10+, Chrome以及Opera浏览器。 需要预先知道 number 类型 input 的一些基本知识。 HTML 5 step 的验证机制可以应用在不支持的浏览器上。

问题 引导 ,威逼利诱

如下一小段含 step 属性的HT ML 代码:

<input ty PE ="number" step="2.1" min="1" />

在Ch rom e浏览器下长相 应该 是下面这个样子(假设限 宽 70像素):

下面提问,请问:

对于上面的 number 框,下面几个数值 哪些 是有效的?
A. 1.0
B. 2.1
C. 3.1
D. 4.2

我的答案是:
(function() { VAR eleAnswer = document.getElementById("answer"), eleSure = document.getElementById(" answers ure"); eleSure.onclick = function() {if (/^c|a|3/.1$/i. test (eleAnswer.value) || Number(eleAnswer.value) === 1){alert("不错嘛,回答正确!");}else if (eleAnswer.value){alert("%>_

如果上面的框框点击了没有反应,可能是因为您在其他网站或是RSS中阅读本文,本文原地址:http://www.zhangxinxu .COM /word Press /?p=2790。

在你大脑这样:


也有可能是这样子:


之后,我们得到了正确的答案: A. 1.0 以及 C. 3.1

可能有人有疑问?明明 step 是 2.1 ,但是 2.1 确实无效的数值呢??

keep on~~

实例页面,现身说法

如果您正在使用的是 文章 一 开始 提到的“雄起”浏览器,您可以狠狠地点击这里:HTML5 number文本框step验证demo

下为C hr ome浏览器下截图:

N个 number 类型输入框,您可以随意设置值,点击最后的“提交”按钮,内置的HTML验证会判断您输入的数值 是否 是符合要求的。

例如,与上面的提问对应的输入框是倒数第二个框框,如下示意:

我们依次输入 1.0 , 2.1 , 3.1 , 4.2 看一下是否会出现提示,结果依次如下截图:

但是,同样是 step=2.1 上面一个框框,输入 3.1 却是无效的:

为何有此差异呢?

细心的你可能发现了其中的差异,就是 min 属性作的祟。

当 min=1 的时候,

min + step * 0 = 1 + 2.1 * 0 = 1 min + step * 1 = 1 + 2.1 * 1 = 3.1 min + step * 1 = 1 + 2.1 * 2 = 5.2 . . .

于是, 1.0 以及 3.1 是有效值,而 2.1 无效的。

当 number 框没有 min 的时候, min 是无限小,实际验证的时候, min 等同于 0 , 因此:

<input type="number" step="2.1" />

的有效值是: 0 , 2.1 , 4.2 .

min + step * 0 = 0 + 2.1 * 0 = 0 min + step * 1 = 0 + 2.1 * 1 = 2.1 min + step * 1 = 0 + 2.1 * 2 = 4.2 . . .

max 跟 step 的有效值判断不来 电 的。

总结概括,小功告成

末日即将来临,没有多少时间扯废话,以下为demo页面测试得出的一些结论:

输入非数值内容,如字母 x ,值会被置空缺省处理 - 浏览器当作你没输入过。 在number输入框的世界里,1.00和1.0和1是没 有区别 的。 默认 step 为 1 ,因此,木有step属性值的时候,小数值是无效的( .0 除外)。
输入数值的有效与否与 step 以及 min 属性相关,至于 max , 是卖切糕的,不搭噶。 输入值 是否有效 的计算公式是:

是否:(输入数值 - min值) ÷ step值  == = 整数

当没有 min 的时候,我们可以把 min 等同于 0 计算处理(实际min是无限小)。 IE10虽然支持 number 类型输入框,但是在UI表现上,却没有上下增减按钮。而且,其提示效果真是粗糙的令人啧舌!

opera 浏览器不能准确认识 step=".1" , 或者 应该是不认识,IE10以及Chrome浏览器可以准确识别为 step="0.1" , 因此,从兼容角度来讲,还是写成 0.1 而不是 .1 每个浏览器对值无效时候的提示文字都是不一样的:
IE10是:“你必须输入有效值”;
Opera是:此表单不允许数字 **。此输入框值允许特定的数字。
Chrome是:值无效。

个人而言,更喜欢Chrome的简洁明了的表述。

欢迎补充,欢迎指出文章表述不准确的地方。

(本篇完)

觉得 可用,就经常来吧! 欢迎评论哦!  html5教程 ,巧夺天工,精雕玉琢。小宝典献丑了!

总结

以上是 为你收集整理的 html5教程-HTML5 number类型文本框step属性的验证机制 全部内容,希望文章能够帮你解决 html5教程-HTML5 number类型文本框step属性的验证机制 所遇到的问题。

如果觉得 网站内容还不错, 推荐好友。

查看更多关于html5教程-HTML5 number类型文本框step属性的验证机制的详细内容...

  阅读:65次