在angular form指令中更新jquery el.val()不会更新$ viewValue

时间:2015-10-16 19:19:44

标签: javascript jquery angularjs angularjs-directive

我有一个修改ng-form中输入的指令。但是,每当我更改字段的值(使用.val())时,$ viewValue保持不变,这将抛出我的验证。

知道如何解决这个问题吗?

          .directive('kcAutotab',function kcAutotab() {
    return {
        restrict: 'A',
        link: function (scope, el, attrs) {
            el.on('keyup', function (e) {
                //don't autotab if the key pressed was left or right arrow, tab, or shift
                if ((e.keyCode !== 37 && e.keyCode !== 39 && e.keyCode !== 9&& e.keyCode !== 16 && e.keyCode !== 8)) {
                    if (el.val().length >= parseInt(el.attr('maxlength'))) {
                        //el.val(el.val().substr(0, parseInt(el.attr('maxlength'))));
                        attrs['ngModel'] = el.val().substr(0, parseInt(el.attr('maxlength')));
                        $('#' + attrs['kcAutotab']).focus();
                    }
                }
            });
        }
    }
});

这是我的指示,你可以看到我在el.val(el.val().substr(0, parseInt(el.attr('maxlength'))));设置值的位置。但是,无论何时我分析表单(通过将整个表单打印到客户端或通过使用ng-inspector检查它),$ viewValue都是el.val()在操作之前的任何内容。

编辑:根据建议更新了指令

0 个答案:

没有答案