tabIndex

Una forma fácil de setear el tabIndex de los input, es metiendo el nombre de estos campos en un array en el orden en que se quiere sean ordenados, luego se pasan por una funcion donde ésta setea los valores.

En la línea de tiempo tengo 6 campos de texto con nombre uno,dos,tres


setTabIndex = function (from,arreglo){
  var largo = arreglo.length;
  from--;
  for( var n = 0; n < largo; n++){
    arreglo[n].tabIndex = ++from
  }
}
campos = [uno,seis,dos,cinco,tres,cuatro];
setTabIndex(1,campos);
stop();

En el array campos, pongo los nombres de los inputs, esto hace referencia a los mismos.
luego el argumento from de la función es el número con el que quiero que el tab index empieze.

Si se le quisiera hacer focus al primer campo, basta con poner
Selection.setFocus(campos[0]);

=)

19 Comments

Fernando said:

no entiendo porque le restas uno al from y luego lo vuelves a aumentar. ademas no se porque lo colocas como argumento. yo lo haria asi:

setTabIndex = function (arreglo){
for( var i=1; i < arreglo.length+1; i++){
arreglo[i].tabIndex = i;
}
}

kada said:

lo paso como argumento por si tienen ya el tabindex seteado y quieren empezar la asignacion via funcion con un numero que no sea 1;
le resto uno para que empieze en el numero justo al hacer ++from, y no tener que sumarle uno despues de la asignacion, esque era una linea mas de codigo en cada loop =D

saludillos fer.;)

Fernando said:

aps.... ya te entendi kada...

setTabIndex = function (from, arreglo){
for( var i=from; i < arreglo.length; i++){
arreglo[i].tabIndex = i;
}
}

asi tb funciona... aunque se puede hacer para que sea opcional

setTabIndex = function (arreglo, from){
var tmp = (arguments.length < 2) ? 1: from;
for( var i=tmp; i < arreglo.length; i++){
arreglo[i].tabIndex = i;
}
}

Es buena idea kada! :)

kada said:

iep, ta bien, pero lo que trato de hacer es manejar los index del array dentro del for y el tab index con otra variable, ya que si pones tmp =1, te estás saltando el index 0 del array =(, igual si quieren empezar en un índice más alto hay broncas, por eso lo manejo por aparte ;)

saludillos
kada.

Pedro Alpera said:

Hola, estuve trasteando a partir de sus codigos y lo deje asi:
[code]
setTabIndex = function (from, arreglo) {
for (var i = 0; i<arreglo.length; i++) {
arreglo[i].tabIndex = from;
from++;
}
};
[/code]
Mas que nada le quite lo de restarle al from... pero es pura cosmetica...

kada said:

está buena la idea pedro, pero algo debe andar mal porque no me jala, debe ser que flash amaneció tonto :)

Fernando said:

setTabIndex = function (from, arreglo) {
var total = arreglo.length;
while(total) arreglo[((total--)+from)] = ((total--)+from);
}

2 lineas.. jaja... no se si funcionara.. pero se esta poniendo gracioso... jajaja

Salu2

Fernando said:

esto de no poder editar los posts es un problema... jaja... me olvide de poner el tabIndex

setTabIndex = function (from, arreglo) {
var total = arreglo.length;
while(total) arreglo[((total--)+from)].tabIndex = ((total--)+from);
}

Salu2

Fernando said:

ay!! que ya no se que tengo hoy dia... dos posts y dos veces que me equivoco seguidas... porfas kada borrate los posts anteriores que me da verguenza ser tan idiota...

esta es la version anterior correcta:

setTabIndex = function (from, arreglo) {
var total = arreglo.length;
while(total) arreglo[((total)+from)].tabIndex = ((total--)+from);
}

y una nueva que se me acaba de ocurrir:

setTabIndex = function (from, arreglo) {
var total = arreglo.length;
while(total) arreglo[((total--)+from)].tabIndex = ((total--)+from);
}

una linea solamente =) jajajaja!!! si alguien lo puede hacer en menos que lo postee por favor!

o mandense otra cosa como esta que esta interesante. Cya!

Fernando said:

jajajaja!!! ya esta bien.. baneame... baneame en serio!! esto me pasa por programar despues de haber dormido... toy que te malogro el blog... jajaja... aca esta el codigo de una linea

setTabIndex = function (from, arreglo) {
for(var i=from;i<(arreglo.length+from);arreglo[i].tabIndex = i++);
}

Mil disculpas en serio!

me voy a pensar en lo mal que me he portado =P

Pedro Alpera said:

Hola,

lo he estado mirando... y por alguna razon no me deja pegar el codigo sin deformarlo... por eso no funcionaba... prueba a ver por que lo mismo es algo del blog. En este link esta el texto que intento pegar como respuesta, pero al hacer preview veras como el codigo se estropear en el for...

http://www.unachinaenmizapato.com/ejemplos/settab/

Fernando said:

pos... si.. que raro este error en el blog... jejeje... pues... como dice pedro veamos que cosa es mejor a ver si llegamos a los 100 posts.. jaja... o que se manden algo parecido.. una funcion mas y la pensamos entre todos en como hacerlo mas corto...

Aca va otra modificación ( ahora el from es opcional ) y sigue siendo una linea =P

setTabIndex = function (arreglo, from) {
for(var i=((from==null) ? 1: from);i<(arreglo.length+((from==null)? 1: from));arreglo[i].tabIndex = i++);
}


ya no se me ocurre que mas hacerle... ya ire pensando...

Ciao!

kada said:

una línea =)

setTabIndex = function (from,arreglo){
while(arreglo[(++i)-1]) arreglo[i-1].tabIndex =(++from-1);
}

campos = [uno,seis,dos,tres,cuatro,cinco];
setTabIndex(1,campos);
Selection.setFocus(campos[0]);
stop();

Pedro Alpera said:

Aqui esta el mio, otra variacion sobre el tema... esta vez usando un for-in, con lo que pasamos del length:

setTabIndex = function (from, arreglo) {
for (var i in arreglo) {
arreglo[i].tabIndex = Number(i)+Number(from);
}
};


xDDDDDDDDDD
y van...

Fernando said:

no se porque la version de kada no me funciona... segun el ultimo player de mi cerebro deberia de funcionar bien...

yo lo haria asi para evitar restarle uno al from al final

setTabIndex = function (from,arreglo){
while(arreglo[(++i)-1]) arreglo[i-1].tabIndex = from++;
}

otra version, ahora con el tan olvidado do..while:

setTabIndex = function (from, arreglo){
do{ arreglo[(++i)-1].tabIndex = from++; }while((i-1) < arreglo.length - 1);
}

jejeje... creo que ya llegamos a la etapa en donde no hay mas soluciones o soluciones mas cortas... jajaja!!

Salu2 :)

sangles said:

POR FAVOR CONSIGANSE ALGO PARA HACER DESPUES DEL TRABAJO!!!

(0.0)

jejeje
saludos

aleph2u said:

Da gusto ponerse a nevgar y encontrar algo realmente bueno, y un sábado porla noche.
Genial señores.

kada said:

gracias aleph2u,
fer.
en cuanto usar el from++, no estas usando el from que viene como parametro, sino un numero arriba.

el mio del while, ami si me funciona :(

Fernando said:

pues... nop... prueba con un trace. El ++ a la derecha aumenta el numero en uno luego de ser utilizado...

algo asi:

var i = 0;

trace (i++); // 0
trace (i); // 1