我正在使用基于角度和jquery的网站。我有一个文本输入字段用于验证浮点数组。我的要求是限制用户输入字母等。
问题是我正在使用e.preventDefault()
,但它不能在Android默认浏览器中工作,但在android chrome中完美运行。
我搜索了很多但无法得到任何解决方案。
我的示例代码: -
$('#test').keydown(function (e) {
e.stopPropagation();
e.preventDefault();
e.returnValue = false;
e.cancelBubble = true;
return false;
});
我也尝试过: -
$('#test').keydown(function (e) {
if (e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;
}
});
注意: - 我无法使用keypress
事件,因为Android默认浏览器无法监听此事件。
答案 0 :(得分:3)
我在Android上使用默认浏览器也遇到了这个问题。 preventDefault对我没有帮助,所以我使用.on jQuery函数。
$('#test').on('input',function () {
var inputText = $(this).val();
var resultText = inputText.replace(/[^0-9]/g, '');
$(this).val(resultText);
});
您可以向正则表达式添加您需要允许的其他字符。希望它有所帮助。
答案 1 :(得分:2)
我不知道你为什么要阻止关键事件,但我认为你只是想阻止输入无效字符。让我们看看如何在没有preventDefault
的情况下解决您的问题:
(function(){ // anon function for scope
var prevVal = $("#test").val(); // get initial value of input
$('#test').on("input", function (e) { // input will also handle paste event. it handle every input'
if(/*your `if` here*/ Math.random() > 0.3){
this.value = prevVal; // You shall not pass!
}
prevVal = this.value; // save current valid value
});
})();
我希望,它能解决你的问题,永远不会忘记"粘贴"!
答案 2 :(得分:2)
答案 3 :(得分:1)
请使用angularjs的$formatters
。这有助于您在viewValue
之前检查modelValue
。
请仔细阅读此文件:https://docs.angularjs.org/api/ng/type/ngModel.NgModelController