如何使 jquery.inputmask 与输入类型 = 数字一起使用?

Posted

技术标签:

【中文标题】如何使 jquery.inputmask 与输入类型 = 数字一起使用?【英文标题】:How to make jquery.inputmask work with input type=number? 【发布时间】:2014-09-16 16:28:07 【问题描述】:

只要输入 type=text,我的代码就可以使用此插件正常工作,但我想使用 type=number,以便在移动设备上显示正确的键盘。

有没有办法做到这一点,希望有一些我在文档中遗漏的设置?

这是我的html

<input id="Price" name="Price" type="number" placeholder="0.00" tabindex="3"/>

这是我的 js:

$(document).ready(function()
    $('#Price').inputmask("[9][9]9.99", 
        numericInput: true,
        "placeholder": "0",
        showMaskOnHover: false,
        greedy: false
    );
);

【问题讨论】:

如果插件在读取或设置光标位置或选择/插入文本方面做了任何事情,由于他们所做的更改,您肯定会在 Chrome 上遇到问题。看到这个问题:***.com/questions/22381837/… @scunliffe 感谢您为我指明了正确的方向。我现在将输入更改为文本,并等待查看光标位置问题是否在 chrome 中得到解决。 【参考方案1】:

jQuery Inputmask 插件 (http://plugins.jquery.com/jquery.inputmask/) 使用 setSelectionRangeselectionStartselectionEnd(在 https://github.com/RobinHerbots/jquery.inputmask/blob/3.x/js/jquery.inputmask-multi.js 中)。这些属性/方法在更新以符合 W3C 更改时,已在 &lt;input type="number"/&gt; 字段 in Chrome 中删除。

如果您认为 W3C 对数字字段移除这些功能的更改是错误的,请投票给Bugzilla bug #24796

有some hacks 可以解决此问题,或者您可能需要使用&lt;input type="text"&gt;

【讨论】:

inputmask 插件似乎不支持任何浏览器中的数字输入。我已经在最新的 FF、IE、Opera 和 Chrome 中测试了我的代码,但它只有在类型设置为文本时才有效。其他浏览器在数字字段上是否具有相同的功能?【参考方案2】:

我发现使用&lt;input type="tel" /&gt; 允许在手机上输入数字,并且还允许触发与type="text" 相同的所有事件!

不支持这些类型的浏览器将退回到使用 “文本”类型。

http://www.caniuse.com/#search=tel

希望这对其他人有所帮助。

【讨论】:

【参考方案3】:

我的解决方案是将 pattern="[0-9]*" 添加到 input type="text",或者如果它不起作用,请使用 input type="tel" - 允许在手机上输入数字

【讨论】:

以上是关于如何使 jquery.inputmask 与输入类型 = 数字一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

RobinHerbots jquery.inputmask 日期范围

Jquery inputmask 大小写大小写

如何使用 jquery inputmask 插件设置文本字段长度的范围

JQuery Inputmask 不显示分隔符

如何为 jquery inputmask 设置 autoUnmask?

12 小时时间格式的 JQuery 输入掩码