【发布时间】:2013-06-13 18:55:25
【问题描述】:
我想为不支持 <input type="number"> 的旧浏览器编写一个 shim。
这很容易检测到,因为在这些浏览器中,任何将type 设置为number 的input 都会将type 报告为text。到目前为止一切顺利。
所以我想做的是找到每个<input type="number"> 并为这些旧浏览器连接事件。
问题是:我如何找到它们?
-
$('input[type=number]').length === 0(当然)。 -
$('input[name=aKnownNumberField]')[0].type === 'text',这并不奇怪,因为这是首先用于特征检测的检查。 -
$($('input[name=aKnownNumberField]')[0]).parent().html().indexOf('type="number"')(或对 HTML 的任何类似检查)也会失败,因为返回的 HTML 将根据浏览器的 DOM。
请注意,我在示例中使用了 jQuery,但我很高兴得到非 jQuery 答案。
如何在不支持它们的浏览器中检测<input type="number">?
【问题讨论】:
-
document.querySelectorAll("input[type='number']") -
@Cherniv
querySelectorAll不支持 Keith 尝试定位的浏览器。 -
您介意在元素上添加一个额外的属性...比如
data-input-type="number"吗?然后您可以通过$('input[data-input-type="number"]')获取它们 -
@Cherniv 很多不支持
<input type="number">的浏览器也支持don't supportquerySelectorAll。例如它在 IE6 或 IE7 中不起作用 -
@Ian 我可以。标记样式也是一种选择,但我真的在寻找一种 shim/polyfill,我可以将其添加到我的全局 JS 中,而无需编辑每个页面。
标签: javascript html html-input polyfills shim