Como posso fazer isso quando você clica em uma área de texto, todo o seu conteúdo é selecionado?
E, eventualmente, quando você clicar novamente, para cancelar a seleção.
Como posso fazer isso quando você clica em uma área de texto, todo o seu conteúdo é selecionado?
E, eventualmente, quando você clicar novamente, para cancelar a seleção.
Respostas:
Para impedir que o usuário fique irritado quando todo o texto for selecionado toda vez que tentar mover o cursor usando o mouse, faça isso usando o focus
evento, não o click
evento. A seguir, o trabalho é feito e soluciona um problema no Chrome que impede a versão mais simples (ou seja, apenas chamar o select()
método da área de texto em um focus
manipulador de eventos).
jsFiddle: http://jsfiddle.net/NM62A/
Código:
<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>
versão 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
entrar na área de texto - a sua outra solução funciona para os dois casos :)
$("#foo").mouseup(function() {
$("#foo").unbind("mouseup");
return false;
});
você precisa para se referir a caixa de texto sem usar this
apenas apresentá-lo com a localização completa .. e ele vai funcionar ..
Melhor maneira, com solução para problema de tabulação e cromo e nova maneira de 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;
});
}
});
Acabei usando isso:
$('.selectAll').toggle(function() {
$(this).select();
}, function() {
$(this).unselect();
});
readonly
atributo então.
$('textarea').focus(function() {
this.select();
}).mouseup(function() {
return false;
});
Versão jQuery ligeiramente mais curta:
$('your-element').focus(function(e) {
e.target.select();
jQuery(e.target).one('mouseup', function(e) {
e.preventDefault();
});
});
Ele lida com a caixa de canto do Chrome corretamente. Veja http://jsfiddle.net/Ztyx/XMkwm/ para um exemplo.
Selecionando texto em um elemento (semelhante ao destaque com o mouse)
:)
Usando a resposta aceita nesse post, você pode chamar a função assim:
$(function() {
$('#textareaId').click(function() {
SelectText('#textareaId');
});
});
$(this).select()
, eu vou usar isso porque é menos código :)