在Android的输入字段中限制用户输入时间

sas*_*asi 5 javascript android angularjs cordova

我想限制用户在Android设备上的数字字段中输入特殊字符。“。” (点)字符未按预期在“ onkeypress”事件中传递值。

通过使用<input type="text">I,我可以阻止用户输入任何特殊字符。

但是,<input type="number"/>我无法限制用户输入点键。

尝试了许多堆栈溢出帖子。但是仍然没有运气。

下面是我正在尝试的代码:

的HTML

<input type="number" ng-model="registrationField.mobilenumber" tabindex="0" no-special-character="^[0-9-]*$" >
Run Code Online (Sandbox Code Playgroud)

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;
                }
            });
        }
    }
}])
Run Code Online (Sandbox Code Playgroud)

我正在使用keydown事件,因为keypress事件不会在数字键盘上按点号键时触发。

另外,我收到了e.keyUnidentified当用户已经进入了关键点。所以我正在尝试使用它。

当用户输入点键并且也无法正常工作时,我尝试过修剪最后一个值。

请提出任何可能的方法。

Android Nexus 5X设备中尝试了以上代码。

Sup*_*shi 0

编辑: 我没有正确理解问题,该解决方案不适用于移动设备,这是输入字段的纯 JavaScript 解决方案。

<div>
<input onkeypress='return event.charCode >= 48 && event.charCode <= 57' type="number" placeholder="Input Value" />
</div>
Run Code Online (Sandbox Code Playgroud)

这是工作 jsfiddle http://jsfiddle.net/tZPg4/16784/