Esta pregunta se ha formulado en algunos formatos diferentes, pero no puedo obtener ninguna de las respuestas para que funcione en mi escenario.
Estoy usando jQuery para implementar el historial de comandos cuando el usuario pulsa las flechas hacia arriba / abajo. Cuando se pulsa la flecha hacia arriba, sustituyo el valor de entrada con el comando anterior y establezco el foco en el campo de entrada, pero quiero que el cursor siempre esté posicionado al final de la cadena de entrada.
Mi código, como está:
$(document).keydown(function(e) {
var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
var input = self.shell.find('input.current:last');
switch(key) {
case 38: // up
lastQuery = self.queries[self.historyCounter-1];
self.historyCounter--;
input.val(lastQuery).focus();
// and it continues on from there
¿Cómo puedo forzar que el cursor se coloque al final de 'entrada' después del enfoque?
javascript
jquery
focus
cursor
jerodsanto
fuente
fuente
var temp = input.focus().val(); input.val('').val(temp);
input.focus().val(input.val());
contenteditable
elementos por alguna razón, tal vez porque uno tiene que usar en.html()
lugar de.val()
Parece un poco extraño, incluso tonto, pero esto me funciona:
Ahora, no estoy seguro de haber replicado su configuración. Supongo que
input
es un<input>
elemento.Al restablecer el valor (a sí mismo), creo que el cursor se coloca al final de la entrada. Probado en Firefox 3 y MSIE7.
fuente
Espero que esto te ayude:
fuente
Chris Coyier tiene un mini complemento jQuery para esto que funciona perfectamente bien: http://css-tricks.com/snippets/jquery/move-cursor-to-end-of-textarea-or-input/
Utiliza setSelectionRange si es compatible, de lo contrario, tiene un respaldo sólido.
Entonces puedes simplemente hacer:
fuente
¿Qué pasa en una sola línea ...
Esta línea me funciona.
fuente
2 respuesta de artlung : Funciona con la segunda línea solo en mi código (IE7, IE8; Jquery v1.6):
Además: si el elemento de entrada se agregó a DOM usando JQuery, no se establece un foco en IE. Usé un pequeño truco:
fuente
Ref: @ will824 Comentario, Esta solución funcionó para mí sin problemas de compatibilidad. El resto de soluciones fallaron en IE9.
Probado y encontrado funcionando en:
fuente
Sé que esta respuesta llega tarde, pero puedo ver que la gente no ha encontrado una respuesta. Para evitar que la tecla arriba coloque el cursor al principio, solo
return false
desde el método que maneja el evento. Esto detiene la cadena de eventos que conduce al movimiento del cursor. Pegar el código revisado del OP a continuación:fuente
var key = e.charCode || e.keyCode || 0;
Utilizo el siguiente código y funciona bien
fuente
Será diferente para diferentes navegadores:
Esto funciona en ff:
Más detalles se encuentran en estos artículos aquí en SitePoint , AspAlliance .
fuente
como otros dijeron, claro y relleno funcionó para mí:
fuente
establezca el valor primero. luego establezca el enfoque. cuando se enfoca, usará el valor que existe en el momento del enfoque, por lo que su valor debe establecerse primero.
esta lógica me funciona con una aplicación que rellena un
<input>
con el valor de un clic<button>
.val()
se establece primero. luegofocus()
fuente
$('input[name=item1]').val(value).focus();
He encontrado lo mismo que algunas personas sugirieron anteriormente. Si
focus()
primero, luego empuja elval()
en la entrada, el cursor se colocará al final del valor de entrada en Firefox, Chrome e IE. Si presionaval()
primero en el campo de entrada, Firefox y Chrome colocan el cursor al final, pero IE lo coloca al frente cuando ustedfocus()
.debería hacer el truco (siempre lo ha hecho para mí de todos modos).
fuente
Al principio, debe establecer el foco en el objeto de cuadro de texto seleccionado y luego establecer el valor.
fuente
funciona para todos los navegadores, es decir.
fuente
Aquí hay otro, un trazador de líneas que no reasigna el valor:
fuente
fuente
La respuesta de scorpion9 funciona. Solo para que quede más claro, vea mi código a continuación,
fuente
Se enfocará con el mouse
$ ("# TextBox"). Focus ();
fuente