【问题标题】:jQuery code to allow numeric input only for AndroidjQuery 代码只允许 Android 的数字输入
【发布时间】:2015-09-08 18:03:02
【问题描述】:

我有以下代码只允许在表单的输入字段中输入 numeric 值:

HTML:

<input type="text" name="qtty" size="2" value="1" class="numOnly" />

Javascript:

var allowedKeys = [8, 9, 13, 27, 37, 39,
    48, 49, 50, 51, 52, 53, 54, 55, 56, 57
];
// 8 = backspace; 9 = tab; 13 = enter; 27 = escape; 37 = left; 39 = right;
// 48-57 = 0-9
$(".numOnly").keypress(function(event) {
    var charCode = (event.which) ? event.which : event.keyCode;
    if ($.inArray(charCode, allowedKeys) == -1)
        return false;
    else
        return true;
});

这适用于桌面(Chrome, Firefox),但不适用于Android (Chrome)。在后者中,包括所有字母数字 (both upper and lower case) 在内的一些击键被传递到文本框,以及一些特殊字符 (e.g. $, %) 而其他特殊字符 (e.g. &amp;, @) 则不是。

为什么会这样,我该怎么做才能使上述代码也能在移动平台上运行?

【问题讨论】:

标签: android jquery character


【解决方案1】:

如果你和我一样讨厌小数点,请使用:

$(".vinput").on("input change paste",
function filterNumericAndDecimal(event) {
    var formControl;
    formControl = $(event.target);
    var newtext = formControl.val().replace(/[^0-9]+/g, "");
    formControl.val(''); //without this the DOT will not go away on my phone!
    formControl.val(newtext);
});

如果您需要包含点,请使用 [^0-9.] 作为正则表达式

我发现了几件事 -keypress 在移动设备上不起作用.. - 听 keyup 事件调用 preventDefault 为时已晚,但没关系,因为 preventDefault 不适用于 android ..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多