2011-06-15 14 views
7

En jQuery, ¿cómo puedo activar el comportamiento de un usuario al siguiente campo de entrada?¿Cómo puedo tabular automáticamente el siguiente campo usando jQuery?

He intentado esto:

var e = jQuery.Event("keydown"); 
e.which = 9; // # Key code for the Tab key 
$("input").trigger(e); 

Pero que activa el evento no se mueve el cursor al campo siguiente.

Supongo que podría mover el cursor manualmente usando focus(), pero decidir qué campo debería ser el siguiente es algo que el navegador ya sabe cómo hacer, por lo que parece mucho más limpio simplemente activar una pestaña.

¿Alguna idea?

Respuesta

3

Véase la respuesta aceptada a this question. Si, por ejemplo, desea mover el foco al siguiente campo cuando se ha ingresado un cierto número de caracteres, puede usar ese código en el evento keyup y verificar el número de caracteres ingresados.

El código en esa respuesta funciona al obtener el conjunto de entradas en el formulario, encontrar la entrada seleccionada y agregar 1 al índice de la entrada seleccionada, y luego desencadenar el evento focus en el elemento con ese índice.

2

Aquí hay una solución, a través de http://jqueryminute.com/set-focus-to-the-next-input-field-with-jquery/

$.fn.focusNextInputField = function() { 
    return this.each(function() { 
     var fields = $(this).parents('form:eq(0),body').find(':input').not('[type=hidden]'); 
     var index = fields.index(this); 
     if (index > -1 && (index + 1) < fields.length) { 
      fields.eq(index + 1).focus(); 
     } 
     return false; 
    }); 
}; 

El uso es el siguiente:

$('current_field_selector').focusNextInputField(); 
0

¿Ha intentado utilizar

$("input").trigger('keypress', e);

como una solución?
Encuentro que a veces ser explícito es lo mejor. Si eso no funciona posiblemente incluso

$("input").trigger('keypress', [{preventDefault:function(){},keyCode:9}]);.

Espero que esto ayude.

Cuestiones relacionadas