jQuery代码,仅允许Android输入数字

时间:2015-09-08 18:03:03

标签: android jquery character

我有以下代码只允许在表单的输入字段中输入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. &, @)则不会。 / p>

为什么这样做,我可以做些什么来使上述代码也能在移动平台上运行?

1 个答案:

答案 0 :(得分:0)

如果您像我一样,并且讨厌小数点,请使用此

$(".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上不起作用。