我在引号中使用了“回归错误”这个词,因为显然对此存在一些不同的意见。要获取完整的详细信息,请跟踪Bug 24796在Bugzilla中。
简而言之,Google Chrome根据最新版本的WhatWG规范实施了更改:http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary
从<input type="number"/>
字段中删除了以下属性和方法。
属性:
- selectionStart
- selectionEnd
方法:
- select()
- setSelectionRange(start, end)
(还有其他的,但这些是常用的关键部分)
如果您检查一个“数字”HTMLInputElement
实例,那么这些方法将被定义,但是尝试调用这些方法或请求属性将会抛出异常。:-(在我看来,这是一个错误(因为功能已被删除而没有得到任何收益...并且有成千上万的网站/应用程序通过JavaScript为这些数字输入字段提供了扩展行为...但我偏离了主题(对于那些希望争论的人,请使用上面列出的错误帖子))
为了可用性目的,我肯定希望并计划继续使用
<input type="number"/>
字段,因为它们向用户代理提供了一个“提示”,如果在移动设备(智能手机/平板电脑/?)上,当该字段聚焦时,我想呈现数字键盘而不是默认的字母键盘。然而,对于当前版本的Chrome(ver 33.0.1750.146)和任何其他盲目实现此规范更改的浏览器,我希望安全地将呈现的字段转换回
<input type="text"/>
注:尝试在修改内容时动态更改这些字段已被证明是不成功的,因为当类型属性更改时,该字段会失去其选择范围。我有一个解决方法,不久将发布,但我想确保这个问题/答案对于遇到此问题的所有开发人员都在这里。