Javascript AngularJs:手动设置焦点以输入文本
我需要手动设置输入元素的焦点。我使用的是Javascript AngularJs:手动设置焦点以输入文本,javascript,angularjs,focus,Javascript,Angularjs,Focus,我需要手动设置输入元素的焦点。我使用的是$event.currentTarget.focus()
$event.currentTarget.focus()但是我不知道为什么它不工作。这就是我正在做的:
HTML:
<div ng-repeat="item in items track by $index" ng-dblclick="onDblClick($event,item)">
<input type="text" ng-model="item.id" ng-disabled="!item.editing" ng-blur="onBlur(item)">
</div>
$scope.onDblClick = function($event, item) {
item.editing = true;
//setting the focus to elemnt but don't know why it's not working
$event.currentTarget.focus();
};
<div ng-repeat="item in items track by $index" ng-dblclick="onDblClick($event,item)">
<input type="text" ng-model="item.id" ng-disabled="!item.editing" ng-blur="onBlur(item)" focus="item.editing">
</div>
app.directive('focus', function($timeout) {
return function(scope, elem, attrs) {
console.log(attrs)
scope.$watch(attrs.focus, function(newval) {
if (newval) {
$timeout(function() {
elem[0].focus();
}, 0, false);
}
});
};
});
这是你的电话号码 无论如何,我是自己想出来的。我创建了一个指令focus
,并设置了一个$watch
HTML:
<div ng-repeat="item in items track by $index" ng-dblclick="onDblClick($event,item)">
<input type="text" ng-model="item.id" ng-disabled="!item.editing" ng-blur="onBlur(item)">
</div>
$scope.onDblClick = function($event, item) {
item.editing = true;
//setting the focus to elemnt but don't know why it's not working
$event.currentTarget.focus();
};
<div ng-repeat="item in items track by $index" ng-dblclick="onDblClick($event,item)">
<input type="text" ng-model="item.id" ng-disabled="!item.editing" ng-blur="onBlur(item)" focus="item.editing">
</div>
app.directive('focus', function($timeout) {
return function(scope, elem, attrs) {
console.log(attrs)
scope.$watch(attrs.focus, function(newval) {
if (newval) {
$timeout(function() {
elem[0].focus();
}, 0, false);
}
});
};
});
这是。它似乎在工作?您到底需要什么?它只是启用文本框,而不是聚焦文本框。如果双击时看到,则输入元素将被启用。但是如果你点击了enable input元素之外的任何地方,而不是理想情况下,它应该会失去焦点,ngBlur回调应该会被触发,但它不会发生。不管怎样,我误解了:)(编辑掉我写的内容)@klskl抱歉,我没有理解你。