1

我们有一个从移动浏览器获取信用卡的订单:<input type="number" id="txtCCNumber" />

除此之外,我们还有一个 JavaScript 可以删除插入到字段中的所有非整数字符:

$('input#txtCCNumber').keyup(function(e)
{
    var ccnum = $(this).val();
    $(this).val(ccnum.replace(/[^\d]/g, ''));
});

然而,我们刚刚意识到,当人们使用 iPhone 尝试输入信用卡时,iPhone 会自动每 3 个数字添加一个逗号(因为 JavaScript)。

有人知道修复这个 JavaScript 的方法吗?

我不想使用 type="tel"。在这种情况下,这不是解决方案。

4

3 回答 3

4

就个人而言,我认为信用卡号码不适合使用input type="number". 根据规范

具有值为“数字”的类型属性的输入元素表示用于将元素的值设置为表示数字的字符串的精确控件。

信用卡“数字”是数字字符串,但它们不标识特定的数值,用户使用某些浏览器附加到输入的向上和向下箭头输入信用卡号是没有意义的场地。您最好的选择是简单地使用input type="text".

此外,将 JavaScript 附加到keyup事件中会惹恼像我这样想要使用分隔符输入信用卡号的人,因为这样更容易进行抽查。只需让人们输入他们喜欢的卡号,然后再将其标准化。

于 2012-08-02T13:09:52.697 回答
0

我看不出为什么您将 type="number" 用于信用卡号字段,因为无论如何您都在使用 JS 删除非整数值。在这里使用 type="text" 很合适。

于 2012-08-02T13:09:34.933 回答
-2

我创建了一个小提琴并在我的 iphone 上进行了测试,它工作正常。

http://jsfiddle.net/MH8gj/

于 2012-08-02T13:09:36.993 回答