Unselect ciò che è stato selezionato in un input con .select ()
Domanda
Dopo aver usato .select()
Per selezionare il testo nella casella di input quando sono stato litigato ho fatto quanto segue:
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.
});
Vedere qui. Avviso per funzionare correttamente (in jsfiddle) è necessario fare clic una volta nel frame dei risultati.
L'idea principale è mouseleave
funziona come come previsto anche.
Come avrai notato, non riesco a trovare un modo per non selezionare il testo quando si libra ed eviti questo:
Soluzione
Altri suggerimenti
Se stai usando jQuery, prova a usare BluR ().
$(this).blur();
In questo caso, Blur () non si sfocano dal testo di input e sebbene dia l'aspetto il testo non viene più selezionato, è ancora selezionato. Per non selezionare veramente qualsiasi testo, faresti:
$(".hoverAble").mouseenter(function() {
this.select();
}).mouseleave(function() {
$(this).prop('selectionStart', 0).prop('selectionEnd',0).blur();
});
Questo funziona:
$(".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();
});
Dovrebbe esserci un modo migliore per risolverlo.
Modifica: ovviamente c'è blur()
.
input.hover(function(){$(this).select();}, function(){$(this).val($(this).val());});
Se usi jQuery, è possibile provare uno dei tanti plugin per non selezionare o impostare la posizione di cura in base alle tue esigenze, ad esempio Questo. In caso contrario, puoi comunque usare il puro Javascript di questi plugin a causa delle licenze open-source