Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery代码只允许Android的数字输入_Android_Jquery_Character - Fatal编程技术网

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);
});