我有一个input
元素,并且使用ng-model在其中包含文本,然后我尝试通过创建自定义侦探来选择所有文本:
.directive('selectText', function() {
return {
require: 'ngModel',
link: function(scope, elem, attrs, ctrl) {
elem.bind('focus', function() {
$(elem).select();
});
scope.$watch("edit",function(newValue,oldValue) {
$(elem).select();
});
}
};
})
效果很好,但我也不希望在用户foucusout
来自控件和focusin
时再次选择该文本。它应该只选择一次文本(而不是第二次焦点)。
另外,当选择所有文本时,如何从元素中删除焦点?
答案 0 :(得分:0)
如果选择了元素,您可以创建将保留布尔值的变量,并且仅当它尚未被选中时才选择元素。像这样:
.directive('selectText', function() {
return {
require: 'ngModel',
link: function(scope, elem, attrs, ctrl) {
var selected = false;
elem.bind('focus', function() {
if (!selected) {
$(elem).select();
selected = true;
}
});
scope.$watch("edit",function(newValue,oldValue) {
$(elem).select();
});
}
};
})
答案 1 :(得分:0)
csc
function Ctrl3($scope) {
$scope.title = 'My relevant title';
}
angular.module('scopePropertiesModule', [])
.directive('selectText', function() {
return {
require: 'ngModel',
link: function(scope, elem, attrs, ctrl) {
var counter = 0;
elem.bind('focus', function() {
console.log(counter)
if (counter < 1) {
$(elem).select();
/*setTimeout(function() {
$(elem).blur();
}, 1000);*/
counter++;
}
});
scope.$watch("edit", function(newValue, oldValue) {
$(elem).select();
});
}
};
})
检查一下。