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

时间:2013-12-09 12:24:53

标签: 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()" maxlength="5"/><br><br>
    <span ng-show ="show">Please enter only numeric value.</span>
</div>

1 个答案:

答案 0 :(得分: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;
                }
            });
        }
    }
});

我做了一个小提琴,我尝试为你创建特殊的过滤器(只传递数字和点)检查出来:http://jsfiddle.net/jNzcY/