2009-01-05 7 views
15

¿Hay una buena manera, en un manejador onfocus Javascript(), de trampolín el enfoque al siguiente elemento en el orden de tabulación, sin tener que introducir manualmente el identificador del elemento que debe ser el siguiente?¿Cómo omito elementos al tabbrar sin usar tabindex?

I construyó un selector de fechas HTML en Django/jQuery. Es una edición de línea seguida de un ícono de calendario que muestra un calendario. Quiero poder desplazarme de la edición de línea a la siguiente entrada, omitiendo el enlace para el icono de calendario. Quiero decir que es un widget generalizado, así que no puedo codificar el ID de lo que viene a continuación y llamar a .focus(). Sé que podría establecer atributos de tabindex en todo, pero eso es más manual de lo que me gustaría. Además, iirc, eso no evitaría que tome el foco, simplemente lo pondría al final del orden de tabulación.

Respuesta

2

Tal vez:

$("#your-calendar-icon").focus(function() { 
    $(this).trigger("blur"); 
); 
+1

Esto no omite el foco, lo restablece de modo que cuando se presione la pestaña, seleccionará el primer elemento en la página – wnbates

0

Utilice un div alrededor del icono de calendario en lugar de un enlace. Luego adjunte sus eventos de calendario a la div. Por defecto, el div no será una tabulación.

2

o:

$("#your-calendar-icon").focus(function() { 
    $(somethingElse).trigger("focus"); 
}); 
0

Si siempre va a ser la entrada después de que el calendario entonces por qué no:

$('#your-calendar-icon').focus(function() { 
    $(this).next('input').focus(); 
}); 

Personalmente, yo diría que si va a ser un complemento, debe simplemente hacer que el siguiente elemento sea una opción de configuración que tenga un valor predeterminado, y especificar el valor predeterminado en los documentos.

27

Conjunto tabindex = "-1" para que el control y el navegador se saltará que el control de tabulación.

+1

Esto funciona, pero no es válido. Los validadores son irritables. ¿Hay una manera simple de ser válido? http://www.w3.org/TR/html401/interact/forms.html#adef-tabindex. "Este valor debe ser un número entre 0 y 32767". – dfrankow

+5

Parece que funciona en FF10 e IE9 al menos. @dfrakow, parece que este es un estándar de facto. Validación condenada ... – mlissner

+0

Me gusta esta solución :) – alemur

0

Como @thetacom dice, sólo se puede utilizar otro tipo de elementos, uno que no recibe el foco. En caso de que aún desee conservar parte de la función de ,, puede probar SkipOnTab.

SkipOnTab: Complemento jQuery para eximir los campos de formulario seleccionados del orden de tabulación de reenvío.

Simplemente agregue data-skip-on-tab="true" al icono selector de fecha (u otros elementos/contenedores) que desea omitir. Usted todavía puede hacer clic para activar el selector de fechas o volver usando cambio - pestaña y utilizar la tecla enter.

Ver the simple demo y the business case demo.

Cuestiones relacionadas