2011-10-30 50 views
19

Me gustaría colocar el cursor en un campo de entrada después de hacer clic en un enlace específico. Estoy usando esto para un pequeño motor de búsqueda.jQuery - Coloque el cursor en el campo de entrada cuando haga clic en el enlace

Imagine un campo de entrada: []. Luego, algunos enlaces que agregan una cadena como: Dinamarca, Inglaterra, etc. al campo de entrada.

Ahora necesito que el cursor se coloque así: "Dinamarca, [aquí]".

¿Esto es posible?

* ACTUALIZACIÓN *

Estoy usando este código en este momento para reemplazar el texto, ¿cómo agregar la "posición del cursor" -trick con esto?

$('#denmark').click(function(){  
    $('#searchBoxBig').val('Denmark, '); 
}); 
+0

¿Desea varios clics para anexar o reemplazar el texto? –

+0

Reemplazar el texto .. He actualizado la pregunta con el texto que uso ahora mismo – skolind

+0

Si también desea mover el símbolo de intercalación en la parte visible del navegador, eche un vistazo a esta respuesta: http://stackoverflow.com/questions/7892902/possible-to-scroll-caret-in-view-inside-a-single-html-text-field-with-javascri/7893633 # 7893633 –

Respuesta

23

Puede establecer dónde se encuentra el cursor en un cuadro de entrada con las propiedades selectionStart y selectionEnd. Si no quiere que se seleccione ningún texto, simplemente haga que sean iguales entre sí.

Así es como podría hacerlo:

var input = $("input"); 
input[0].selectionStart = input[0].selectionEnd = input.val().length; 
+0

No importa, esto lo hizo. ¡Es genial! Gracias Charlie! :) – skolind

+0

esto no funcionó en el safari móvil para mí, tuve que usar la respuesta de Nicolas Modrzyk. – Sebastian

2
$(":input[name=xxxx]").focus(); 

Ah, lo que necesita el cursor a ser después de todo el texto? Eche un vistazo aquí: jQuery Set Cursor Position in Text Area funciona igual para una entrada en lugar de un área de texto.

Esto también funciona si usa otros selectores.

33

sí, coger el evento click en el ancla prevenir la acción predeterminada y se centran en el campo.

el contexto de la función contiene el elemento al que se ha hecho clic para que pueda calcular en qué campo aplicar la llamada de enfoque.

$(anchorSelector).live("click", function(e) { 
    e.preventDefault(); 

    $(fieldSelector).focus() 

    return false; 
}) 
+0

He actualizado la pregunta, ¿cómo agregarías el truco a mi código actual para reemplazar el texto? – skolind

+2

¡Este es el camino a seguir! – blackhawk

+0

¡esto también funciona en el safari móvil! ¡Gracias! Prácticamente – Sebastian

Cuestiones relacionadas