Question sur form.elements[indice]

Question sur form.elements[indice] - HTML/CSS - Programmation

Marsh Posté le 02-11-2003 à 21:48:27    

Bonjour,
 
J'ai fait la fonction suivante:

function testvaleur(indice,valeur)
{
if (!isnumeric(valeur))
  {
  alert("Veuillez indiquer une quantité supérieure à zéro." );
  form.elements[indice].value="";
  form.elements[indice].focus();
  }
else if (form.elements[indice].value=="" )
  form.elements[indice].value=0
}


 
Elle permet de contrôler qu'un champ texte est numérique (avec une fonction isnumeric). Cependant avec cette fonction je suis obligé de donner l'indice du champ qui est le numéro d'ordre dans la liste des objets du formulaire. Ici l'indice est 1 par exemple:

<input name="X" type="text" size=4 value=0 onblur='javascript:testvaleur(1,this.value)'>


 
Comment éviter de donner l'indice? Peut-on faire la même fonction à partir du nom du champ?
Merci :hello:

Reply

Marsh Posté le 02-11-2003 à 21:48:27   

Reply

Marsh Posté le 03-11-2003 à 00:49:43    

Oui, en ajoutant un attribut "id" (identique à ton "name" ) :
 

<input id="X" ...>


 
puis pour accéder à l'élément :  
 

eldocument.getElementById("X" );


 
C'est la méthode standard du DOM d'accès aux éléments.
 
Donc pour résumer :
 

function testvaleur(idChamp) {
 
champ = document.getElementById(idChamp);
 
if (!isnumeric(champ.value)) {
  alert("Veuillez indiquer une quantité supérieure à zéro." );
  champ.value="";
  champ.focus();
} else if (champ.value=="" )
  champ.value=0;
}
 
<input name="X" id="X" type="text" size=4 value=0 onblur="testvaleur('X');">


 
Tu constateras qu'il est inutile de passer la valeur en paraètre.


Message édité par gm_superstar le 03-11-2003 à 00:50:35

---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 03-11-2003 à 00:50:20    


<input type="text" size=4 value=0 onblur='javascript:testvaleur(this)'>
 
function testvaleur(n)  
{  
 if (!isnumeric(n.value))  
 {  
  alert("Veuillez indiquer une quantité supérieure à zéro." );  
  n.value="";  
  n.focus();  
 }  
 else if (n.value=="" )   n.value=0;
}

Reply

Marsh Posté le 03-11-2003 à 00:51:16    

Oui c'est encore mieux en passant 'this' en paramètre ;)


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 03-11-2003 à 18:57:35    

Merci!! :)
J'avais essayé avec this mais je ne devais pas utilisé la bonne syntaxe!


Message édité par heffer le 03-11-2003 à 18:58:06
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed