Deseleccionar lo que se seleccionó en una entrada con .select ()
Pregunta
Después de usar .select()
Para seleccionar el texto en el cuadro de entrada cuando se desplaza, hice lo siguiente:
HTML:
<input type="text" class="hoverAble" value="hover here"/><br />
jQuery:
$(".hoverAble").mouseenter(function() {
this.select();
}).mouseleave(function() {
//I can't figure what to put here.
});
Ver aquí. Advertencia para que funcione correctamente (en jsfiddle) debe hacer clic una vez en el marco de resultados.
La idea principal es mouseleave
está trabajando como como se esperaba además.
Como habrás notado, no puedo encontrar una manera de no seleccionar el texto cuando te pases y evitar esto:
Solución
Otros consejos
Si está usando jQuery, intente usar blur ().
$(this).blur();
En este caso, Blur () solo se desabrode del texto de entrada, y aunque le da la apariencia el texto ya no está seleccionado, todavía está seleccionado. Para no seleccionar verdaderamente ningún texto, lo haría:
$(".hoverAble").mouseenter(function() {
this.select();
}).mouseleave(function() {
$(this).prop('selectionStart', 0).prop('selectionEnd',0).blur();
});
Esto funciona:
$(".hoverAble").hover(function() {
$(this).select();
$(this).after("<input type='text' style='height:0;width:0;border:0;padding:0;margin:0;' id='tmp_hidden' />");
}, function(){
$("#tmp_hidden").select().remove();
});
Debería haber una mejor manera de resolverlo pensó.
EDITAR: Por supuesto que hay blur()
.
input.hover(function(){$(this).select();}, function(){$(this).val($(this).val());});
Si usa jQuery, puede probar uno de los muchos complementos para no seleccionar o establecer la posición del careto según sus necesidades, por ejemplo, Éste. Si no lo hace, aún puede usar el JavaScript puro de estos complementos debido a las licencias de código abierto