Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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
Javascript angularjs的ng keydown事件,显示按下的键的值之前,按下的键的值_Javascript_Angularjs - Fatal编程技术网

Javascript angularjs的ng keydown事件,显示按下的键的值之前,按下的键的值

Javascript angularjs的ng keydown事件,显示按下的键的值之前,按下的键的值,javascript,angularjs,Javascript,Angularjs,我想在按键按下事件中格式化一个输入数字,但需要检查它是否是一个包含点(.)的数字,而不是我需要验证的任何其他符号,然后才显示在输入字段中 <div ng-controller = "MyCtrl1"> <label>Enter a 4 digit number to format:</label> <input type ="text" ng-model="Number" ng-keydown ="update()" ng-blur ="updated(

我想在按键按下事件中格式化一个输入数字,但需要检查它是否是一个包含点(.)的数字,而不是我需要验证的任何其他符号,然后才显示在输入字段中

<div ng-controller = "MyCtrl1">
<label>Enter a 4 digit number to format:</label>
<input type ="text" ng-model="Number" ng-keydown ="update()" ng-blur ="updated()" maxlength="5"/><br><br>
    <span ng-show ="show">Please enter only numeric value.</span>
</div>

输入一个4位数字以设置格式:


请只输入数值。
我认为,您应该使用一些特殊的过滤器指令。该指令绑定到keydown事件某些筛选函数,如果用户输入无效字符,该函数将阻止默认事件。诸如此类:

app.directive('numbersOnly', function () {
    return  {
        restrict: 'A',
        link: function (scope, elm, attrs, ctrl) {
            elm.on('keydown', function (event) {
                if (validCondition) {
                    return true;
                } else {
                    event.preventDefault();
                    return false;
                }
            });
        }
    }
});

我制作了一个提琴,我试图为您创建一个特殊的过滤器(只传递数字和点)检查它:

在使用ng keydown事件时,它首先显示输入的字符,然后更新(),检查条件。您的示例上没有ng keydown。你有没有可能编一把小提琴?@user3012939这种方法并不完美,因为剪切/复制/粘贴不起作用。我忘了在“白名单”中添加
tab
字符:)我认为,过滤字符的方法不正确,用户可以(或不能)输入这些字符,您必须为事件提问。shiftKey to因为这会引入无效字符扫描请为此编写一些单元测试?谢谢