Passer d'un champ à un autre

Eléphant du PHP | 333 Messages

31 oct. 2007, 05:12

Bonjour j'ai un formulaire où l'on retrouve 8 fois le même champ (pouvoir entrer 10 fois des information différente ayant le même identifiant dans ma BDD sous la même requête.

Il fonctionne très bien, l'information que j'y entre est un code numérique composé de 6 chiffres, j'aimerais faire en sorte que après avoir entré le 6ème chiffre, il passe automatiquement au champ suivant et encore le 6ème chiffre pour le champ suivant et ainsi de suite.

C'est unpeu de paresse je le sais, le TAB ou prendre la sourie n'est pas difficile mais bon....

j'ai regadé sur le web pour cela,

Code : Tout sélectionner

onkeyup="tab(this,this.form.INPUT NAME,6)"

Voici mon code:
<input class="code" type="text" name="code[]" onkeyup="tab(this,this.form.code[],6)" size="15"><br>
								<input class="code" type="text" name="code[]" size="15" maxlength="6" value=""><br>
								<input class="code" type="text" name="code[]" size="15" maxlength="6" value=""><br>
								<input class="code" type="text" name="code[]" size="15" maxlength="6" value=""><br>
								<input class="code" type="text" name="code[]" size="15" maxlength="6" value=""><br>
								<input class="code" type="text" name="code[]" size="15" maxlength="6" value=""><br>
								<input class="code" type="text" name="code[]" size="15" maxlength="6" value=""><br>
								<input class="code" type="text" name="code[]" size="15" maxlength="6" value="">
Comme vous le voyer pour les besoins de le requête en PHP tous les INPUT ont comme NAME code[] , dan sla source du code que j'avais trouvé je devais y mettre le nom du INPUT à diriger le curseur, J'ai essayer de changer mon code[] pour un autre nom fictif que j'ai intégré dan sla commande onkeyup et ca fonctionnair (bien sure pas la requête php, mais une fois de retour au code[] il ne change plus de ligne, il n'arrête même pas à 6 caractères.

Pouvez vous m'aider
Merci
Ce n'est pas toujours facile d'essayer, mais c'est toujours vallorisant lorsqu'on y arrive !!!

Apprenez, ne le faite pas faire par les autres.

Eléphant du PHP | 333 Messages

31 oct. 2007, 05:20

j'ai oublier une ptite partie du code

Code : Tout sélectionner

function tab(obj,nextobj,mlength){ if(!mlength) mlength = obj.size; if(obj.value.length>=mlength){ obj.value = obj.value.substr(0,mlength); nextobj.focus(); }
Ce n'est pas toujours facile d'essayer, mais c'est toujours vallorisant lorsqu'on y arrive !!!

Apprenez, ne le faite pas faire par les autres.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

31 oct. 2007, 10:08

passe par un "id" unique pour chaque élément. id=1; id=2; id=3...
L'appel donnerai
onkeyup="tab(this,6)"
function tab(obj,mlength)
{
   if(!mlength) 
      mlength = obj.size;
   if(obj.value.length>=mlength){
      obj.value = obj.value.substr(0,mlength);

    nextobj = parseInt(obj.id) + 1; 
    if(document.getElementById(nextobj))
       document.getElementById(nextobj).focus();
}

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 333 Messages

31 oct. 2007, 19:26

pas certain de comprendre car ca ne fonctionne pas, j'ai essayer plusieurs manière, voisi ma dernière tentative.

Code : Tout sélectionner

<script type="text/javascript"> function tab(obj,nextobj,mlength) { if(!mlength) mlength = obj.size; if(obj.value.length>=mlength){ obj.value = obj.value.substr(0,mlength); nextobj = parseInt(obj.id) + 1; if(document.getElementById(nextobj)) document.getElementById(nextobj).focus(); } </script>
<form name="multiloan" action="multiloan.php" method="post">
<table border="0" align="center" class="loan">
	<tr>
		<td class="code">Code DVD</td>
											  
	</tr>
	<tr>
		<td class="code-form">	<input class="code" type="text" name="code[]" id=1 size="15" onkeyup="tab(this,this.multiloan.2,6)" ><br>
								<input class="code" type="text" name="code[]" id=2 size="15" onkeyup="tab(this,this.multiloan.3,6)" maxlength="6" value=""><br>
								<input class="code" type="text" name="code[]" id=3 size="15" onkeyup="tab(this,this.multiloan.4,6)" maxlength="6" value=""><br>
								<input class="code" type="text" name="code[]" id=4 size="15" onkeyup="tab(this,this.multiloan.5,6)" maxlength="6" value=""><br>
								<input class="code" type="text" name="code[]" id=5 size="15" onkeyup="tab(this,this.multiloan.6,6)" maxlength="6" value=""><br>
								<input class="code" type="text" name="code[]" id=6 size="15" onkeyup="tab(this,this.multiloan.7,6)" maxlength="6" value=""><br>
								<input class="code" type="text" name="code[]" id=7 size="15" onkeyup="tab(this,this.multiloan.8,6)" maxlength="6" value=""><br>
								<input class="code" type="text" name="code[]" id=8 size="15" maxlength="6" value="">
		</td>
		<td>			
Ce n'est pas toujours facile d'essayer, mais c'est toujours vallorisant lorsqu'on y arrive !!!

Apprenez, ne le faite pas faire par les autres.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

31 oct. 2007, 20:00

Bonjour,

Voila en simplifié un exemple que je viens de faire qui fonctionne:
<form>
<input type="text" name="champ1" id="champ1" onkeyup="if (this.value.length>=6) document.getElementById('champ2').focus();" />
<input type="text" name="champ2" id="champ2" onkeyup="if (this.value.length>=6) document.getElementById('champ3').focus();" />
<input type="text" name="champ3" id="champ3" onkeyup="if (this.value.length>=6) document.getElementById('champ4').focus();" />
<input type="text" name="champ4" id="champ4" onkeyup="if (this.value.length>=6) document.getElementById('champ5').focus();" />
<input type="text" name="champ5" id="champ5" onkeyup="if (this.value.length>=6) document.getElementById('champ6').focus();" />
<input type="text" name="champ6" id="champ6" onkeyup="if (this.value.length>=6) document.getElementById('champ7').focus();" />
<input type="text" name="champ7" id="champ7" onkeyup="if (this.value.length>=6) document.getElementById('champ8').focus();" />
<input type="text" name="champ8" id="champ8" onkeyup="if (this.value.length>=6) document.getElementById('btn_envoi').focus();" />
<input type="submit" id="btn_envoi" value="Envoyer" />
</form>
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 333 Messages

31 oct. 2007, 20:38

Bonjour,

Voila en simplifié un exemple que je viens de faire qui fonctionne:
<form>
<input type="text" name="champ1" id="champ1" onkeyup="if (this.value.length>=6) document.getElementById('champ2').focus();" />
<input type="text" name="champ2" id="champ2" onkeyup="if (this.value.length>=6) document.getElementById('champ3').focus();" />
<input type="text" name="champ3" id="champ3" onkeyup="if (this.value.length>=6) document.getElementById('champ4').focus();" />
<input type="text" name="champ4" id="champ4" onkeyup="if (this.value.length>=6) document.getElementById('champ5').focus();" />
<input type="text" name="champ5" id="champ5" onkeyup="if (this.value.length>=6) document.getElementById('champ6').focus();" />
<input type="text" name="champ6" id="champ6" onkeyup="if (this.value.length>=6) document.getElementById('champ7').focus();" />
<input type="text" name="champ7" id="champ7" onkeyup="if (this.value.length>=6) document.getElementById('champ8').focus();" />
<input type="text" name="champ8" id="champ8" onkeyup="if (this.value.length>=6) document.getElementById('btn_envoi').focus();" />
<input type="submit" id="btn_envoi" value="Envoyer" />
</form>

Génial merci ca fonctionne très bien...
Ce n'est pas toujours facile d'essayer, mais c'est toujours vallorisant lorsqu'on y arrive !!!

Apprenez, ne le faite pas faire par les autres.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

01 nov. 2007, 12:52

pas certain de comprendre car ca ne fonctionne pas, j'ai essayer plusieurs manière, voisi ma dernière tentative.
Un peu normal je suppose... tu n'as pas récopié les bons paramètres et un attribut (ici id) est toujours entre guillemets.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute