【发布时间】:2016-11-22 13:12:15
【问题描述】:
我想限制用户在 Android 设备上的数字字段中输入特殊字符。这 ”。” (点)字符没有像预期的那样在“onkeypress”事件中传递值。
使用<input type="text">,我可以阻止用户输入任何特殊字符。
但是使用<input type="number"/> 我无法限制用户输入点键。
尝试了许多堆栈溢出帖子。但仍然没有运气。
下面是我正在尝试的代码:
HTML
<input type="number" ng-model="registrationField.mobilenumber" tabindex="0" no-special-character="^[0-9-]*$" >
JS
app.directive("noSpecialCharacter", [function() {
return {
restrict: "A",
link: function(scope, elem, attrs) {
var limit = parseInt(attrs.limitTo);
var regex = RegExp(attrs.noSpecialCharacter);
angular.element(elem).on("keydown", function(e) {
if(e.key == "Unidentified"){
e.preventDefault();
return false;
}
});
}
}
}])
我正在使用keydown 事件,因为keypress 事件不会在按下数字键盘中的点键时触发。
另外,当用户输入点键时,我收到e.key 为Unidentified。所以我试图用它来操纵它。
我尝试在用户输入点键时修剪最后一个值,但这也不起作用。
请提出任何可能的方法。
在Android Nexus 5X 设备中尝试了上述代码。
【问题讨论】:
-
如果您尝试对电话号码进行输入验证,请不要尝试使用
input[type=number]。它的意思是实际数字。然后尝试改用输入掩码 -
@Eddi 我明白了。但客户只想使用数字键盘。有没有其他的实现方式?
-
你试过输入
type=tel吗?
标签: javascript android angularjs cordova