Як я можу це зробити так, коли клацніть всередині текстової області, вибирається весь її вміст?
І врешті, коли ви клацнете ще раз, скасуйте його.
Як я можу це зробити так, коли клацніть всередині текстової області, вибирається весь її вміст?
І врешті, коли ви клацнете ще раз, скасуйте його.
Відповіді:
Щоб користувач не дратувався, коли весь текст вибирався кожен раз, коли він намагався перемістити карету за допомогою миші, слід робити це за допомогою focus
події, а не click
події. Далі буде виконано завдання і вирішиться проблема в Chrome, яка не дозволяє найпростішій версії (тобто просто викликати select()
метод textarea в focus
обробнику подій).
jsFiddle: http://jsfiddle.net/NM62A/
Код:
<textarea id="foo">Some text</textarea>
<script type="text/javascript">
var textBox = document.getElementById("foo");
textBox.onfocus = function() {
textBox.select();
// Work around Chrome's little problem
textBox.onmouseup = function() {
// Prevent further mouseup intervention
textBox.onmouseup = null;
return false;
};
};
</script>
Версія jQuery:
$("#foo").focus(function() {
var $this = $(this);
$this.select();
// Work around Chrome's little problem
$this.mouseup(function() {
// Prevent further mouseup intervention
$this.unbind("mouseup");
return false;
});
});
tab
потрапили в textarea - ваше інше рішення працює в обох випадках :)
$("#foo").mouseup(function() {
$("#foo").unbind("mouseup");
return false;
});
вам потрібно посилатись на текстове поле, не використовуючи this
просто посилатися на нього з повним шляхом .. і він спрацює ..
Краще, із вирішенням проблеми із вкладками та хромуванням та новим способом jquery
$("#element").on("focus keyup", function(e){
var keycode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
if(keycode === 9 || !keycode){
// Hacemos select
var $this = $(this);
$this.select();
// Para Chrome's que da problema
$this.on("mouseup", function() {
// Unbindeamos el mouseup
$this.off("mouseup");
return false;
});
}
});
Я в кінцевому підсумку скористався цим:
$('.selectAll').toggle(function() {
$(this).select();
}, function() {
$(this).unselect();
});
readonly
потім атрибут.
$('textarea').focus(function() {
this.select();
}).mouseup(function() {
return false;
});
Трохи коротша версія jQuery:
$('your-element').focus(function(e) {
e.target.select();
jQuery(e.target).one('mouseup', function(e) {
e.preventDefault();
});
});
Він правильно поводиться з кутовим корпусом Chrome. Для прикладу див. Http://jsfiddle.net/Ztyx/XMkwm/ .
Вибір тексту в елементі (схожий на виділення мишкою)
:)
Використовуючи прийняту відповідь на цій публікації, ви можете зателефонувати до такої функції:
$(function() {
$('#textareaId').click(function() {
SelectText('#textareaId');
});
});
$(this).select()
, я буду використовувати це, оскільки це менше коду :)