jQuery代码只允许Android的数字输入
我有以下代码,只允许在表单的输入字段中输入jQuery代码只允许Android的数字输入,android,jquery,character,Android,Jquery,Character,我有以下代码,只允许在表单的输入字段中输入数值值: HTML: 这可以在桌面(Chrome,Firefox)上使用,但不能在Android(Chrome)上使用。在后者中,包括所有字母数字(大写和小写)在内的一些按键以及一些特殊字符(如$,%)被传递到文本框,而其他特殊字符(如&,@)则不被传递 这是为什么?我该怎么做才能使上述代码在移动平台上也能工作?如果你像我一样讨厌小数点,请使用以下方法: $(".vinput").on("input change paste", function fil
数值
值:
HTML:
这可以在桌面(Chrome,Firefox)
上使用,但不能在Android(Chrome)
上使用。在后者中,包括所有字母数字(大写和小写
)在内的一些按键以及一些特殊字符(如$,%
)被传递到文本框,而其他特殊字符(如&,@
)则不被传递
这是为什么?我该怎么做才能使上述代码在移动平台上也能工作?如果你像我一样讨厌小数点,请使用以下方法:
$(".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.]作为正则表达式
我发现了一些东西
-按键在手机上不起作用。。
-监听keyup事件对于调用preventDefault来说已经太晚了,但无需担心,因为preventDefault在android上不起作用。您可以使用
input type='number'
@Sushi:这并不能解释为什么引用的jQuery代码片段在android上的行为方式。此外,type=number不提供等效的行为,例如允许小数点。的可能重复
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;
});
$(".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);
});