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因为这会引入无效字符扫描请为此编写一些单元测试?谢谢