【发布时间】: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. &, @) 则不是。
为什么会这样,我该怎么做才能使上述代码也能在移动平台上运行?
【问题讨论】:
-
你可以使用
input type='number'w3.org/TR/html-markup/input.number.html -
@Sushi:这并不能解释为什么引用的 jQuery sn-p 的行为方式与它在 Android 上的行为方式相同。此外, type=number 不提供等效的行为,例如允许小数点。