Select text on input focus
angularjs, angularjs-directive
Solution
The way to do this in Angular is to create a custom directive which does the autoselect for you.
module.directive('selectOnClick', ['$window', function ($window) {
return {
restrict: 'A',
link: function (scope, element, attrs) {
element.on('click', function () {
if (!$window.getSelection().toString()) {
// Required for mobile Safari
this.setSelectionRange(0, this.value.length)
}
});
}
};
}]);
Apply the directive like this:
<input type="text" value="test" select-on-click />
View demo
Update1: Removed jQuery dependency.
Update2: Restrict as attribute.
Update3: Works in mobile Safari. Allows selecting part of the text (requires IE>8).
Problem
I have a text input. When the input receives focus I want to select the text inside of the input. With jQuery I'd do it this way: ``` <input type="text" value="test" /> ``` ``` $("input[type=text]").click(function() { $(this).select(); // would select "test" in this example }); ``` I've searched around to try and find the Angular way but most examples I'm finding are dealing with a directive that is watching a modal property for a change. I'm assuming I need a directive that is watching for an input that receives focus. How would I do that?