【发布时间】:2025-12-22 19:45:10
【问题描述】:
我有input field:
<input type="text" id="myId" ns-validate="" class="someClass" ng-model="Date" ng-
focus="focus($event, 'Parameters')" ng-blur="blur($event)" tabindex="-1">
焦点事件绑定到这个方法:
scope.focus = function (e, names) {
scope.dateSet = false;
$(e.currentTarget).blur();
$(e.currentTarget).prop('readonly', true).addClass('focus');
};
如果我注释掉 blur() 不会发生错误,但需要使只读在 IE 上工作。
可能是由于这个导致模糊事件绑定到这个方法:
scope.blur = function (e) {
$(e.currentTarget).prop('readonly', false).removeClass('focus');
};
如果是,为什么这在 IE 中有效但在 Chrome 中失败?
按照 cmets 中的建议,我尝试创建一个指令:
angular.module('xxx').directive('blurChecker', function () {
return function (scope, element, attributes) {
scope.$watch(attributes.blurChecker, function(){
element[0].blur();
})
};
});
添加到 html
blurChecker='true'
没有任何影响。有什么想法吗?
【问题讨论】:
-
HTML
ng-blur="blur($element)"JS:scope.blur = function (ele) { ele.prop('readonly', false).removeClass('focus'); }; -
sry 不工作。对象没有道具
-
然后使用指令做同样的事情..你会得到一个更好的 DOM 控制器..
标签: javascript jquery angularjs events angularjs-directive