我有一个修改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()在操作之前的任何内容。
编辑:根据建议更新了指令