나열된 답변은 나에 따라 부분적입니다. Angular와 JQuery 에서이 작업을 수행하는 방법에 대한 두 가지 예를 아래에 연결했습니다.
이 솔루션에는 다음과 같은 기능이 있습니다.
- JQuery, Safari, Chrome, IE, Firefox 등을 지원하는 모든 브라우저에서 작동합니다.
- Phonegap / Cordova : Android 및 IO에서 작동합니다.
- 입력이 다음 번 블러까지 초점을 얻은 후에 만 한 번만 선택한 다음 초점
- 여러 입력을 사용할 수 있으며 고장 나지 않습니다.
- 앵귤러 디렉티브는 단순히 재사용 할 수 있습니다.
- JQuery를 쉽게 수정할 수 있습니다
JQuery :
http://plnkr.co/edit/VZ0o2FJQHTmOMfSPRqpH?p=preview
$("input").blur(function() {
if ($(this).attr("data-selected-all")) {
//Remove atribute to allow select all again on focus
$(this).removeAttr("data-selected-all");
}
});
$("input").click(function() {
if (!$(this).attr("data-selected-all")) {
try {
$(this).selectionStart = 0;
$(this).selectionEnd = $(this).value.length + 1;
//add atribute allowing normal selecting post focus
$(this).attr("data-selected-all", true);
} catch (err) {
$(this).select();
//add atribute allowing normal selecting post focus
$(this).attr("data-selected-all", true);
}
}
});
각도 :
http://plnkr.co/edit/llcyAf?p=preview
var app = angular.module('app', []);
//add select-all-on-click to any input to use directive
app.directive('selectAllOnClick', [function() {
return {
restrict: 'A',
link: function(scope, element, attrs) {
var hasSelectedAll = false;
element.on('click', function($event) {
if (!hasSelectedAll) {
try {
//IOs, Safari, thows exception on Chrome etc
this.selectionStart = 0;
this.selectionEnd = this.value.length + 1;
hasSelectedAll = true;
} catch (err) {
//Non IOs option if not supported, e.g. Chrome
this.select();
hasSelectedAll = true;
}
}
});
//On blur reset hasSelectedAll to allow full select
element.on('blur', function($event) {
hasSelectedAll = false;
});
}
};
}]);
<label>
레이블이 아닌 레이블 을 사용하는 것 입니다value
. JS와 CSS를 사용하여 의미가 같지 않게 똑같이 보이게 할 수 있습니다. dorward.me.uk/tmp/label-work/example.html 에는 jQuery를 사용한 예제가 있습니다.