field.focus javascript avec iE7 et Chrome
Bonjour
Quelqu'n a eu un probleme avec la fonction focus d 'un champ.
en gros ce que je dosi faire c'est lorsque mon champs est rempli au max il va au champs suivant mais le probleme c'est que j'ai un trois champ qui se suivent sans de libelle et ca me fait sauter deux champ .
Mais ce qui est bizarre c'est que ca marche sur firefox le focus marche tres bien.
il ya t il un moyen de prendre le focus avec l'argument (paramname ou ID).
Merci pour ceux qui lisent .
j envoie le code demain je ne suis pas au boulot :/
Code:
1 2 3 4 5 6 7 8 9 10 11
| <s:textfield
name="Jour"
theme="perso" tabindex="5" id="dn_dd" maxlength="2" size="2" />
/ <s:textfield
name="Mois"
theme="perso" tabindex="6" id="dn_mm" maxlength="2" size="2" />
/ <s:textfield
name="Annee"
theme="perso" tabindex="7" id="dn_aaaa" maxlength="4"
size="4" /> <span class="date-pattern">(JJ/MM/AAAA)</span>
</li> |
mon javascript:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| $('#dn_dd, #dn_mm, #dn_aaaa').keyup(function(event) {nextFieldAtChar($(this), event.which);});
function nextFieldAtChar(field, key)
{
// Récupérer la longueur max
limit = field.attr('maxlength');
// Si la touche TAB est activée, ne pas faire le contrôle pour éviter les
// pièges aux claviers
if(key == 9 || key == 16)
return true;
// Calculer la longueur de la saisie
longeur = field.val().length;
if (field.id!="dn_jj" || field.id!="dn_mm")
{
// Répérer le champ suivant
next = field.next('input').eq(0);alert("next suivant:"+field.val());
if( ! next.length){
next = field.parent().next().find('input').eq(0);
alert("next1:"+field.val());
}
if( ! next.length)
{ next = field.parent().next().next().find('input').eq(0);
alert("next2:"+field.val());
}
// Une fois la limite atteinte, déplacer le focus
if(next.length && longeur >= limit)
{
var toto=next.focus();
alert("next3:"+field.val()+" "+toto);
}
}
else{
if(field.id=="dn_jj"){
next=${'#dn_mm'};
else{}
}}
} |