¿Cómo puedo hacer que cuando haga clic dentro de un área de texto, se seleccione todo su contenido?
Y, finalmente, cuando haga clic nuevamente, para anular la selección.
¿Cómo puedo hacer que cuando haga clic dentro de un área de texto, se seleccione todo su contenido?
Y, finalmente, cuando haga clic nuevamente, para anular la selección.
Respuestas:
Para evitar que el usuario se enfade cuando se selecciona todo el texto cada vez que intenta mover el cursor con el mouse, debe hacerlo usando el focus
evento, no el click
evento. A continuación se hará el trabajo y las obras en torno a un problema en Chrome que previene la versión más simple (es decir, sólo llamar del área de texto select()
método en un focus
controlador de eventos) de trabajar.
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>
Versión de 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
ingresas al área de texto; la otra solución funciona para ambos casos :)
$("#foo").mouseup(function() {
$("#foo").unbind("mouseup");
return false;
});
debe consultar el cuadro de texto sin usarlo, this
simplemente
Mejor manera, con solución al problema de tab y Chrome y nueva forma 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;
});
}
});
Terminé usando esto:
$('.selectAll').toggle(function() {
$(this).select();
}, function() {
$(this).unselect();
});
readonly
atributo a continuación.
$('textarea').focus(function() {
this.select();
}).mouseup(function() {
return false;
});
Versión jQuery ligeramente más corta:
$('your-element').focus(function(e) {
e.target.select();
jQuery(e.target).one('mouseup', function(e) {
e.preventDefault();
});
});
Maneja la caja de la esquina de Chrome correctamente. Consulte http://jsfiddle.net/Ztyx/XMkwm/ para ver un ejemplo.
Seleccionar texto en un elemento (similar a resaltar con el mouse)
:)
Usando la respuesta aceptada en esa publicación, puede llamar a la función de esta manera:
$(function() {
$('#textareaId').click(function() {
SelectText('#textareaId');
});
});
$(this).select()
, lo usaré porque es menos código :)