Bonjour !
Je suis entrain de bosser sur un petit module pour effectuer des demandes d'articles.
J'ai permis à l'utilisateur d'ajouter des lignes à la volée pour demander autant d'article qu'il le souhaite.
Lorsque l'utilisateur enregistre sa demande, j'efface les lignes une par une afin qu'il voit que la demande a été prise en compte.
J'utilise donc du JS pour créer et supprimer les lignes.
Sauf que ma fonction pour supprimer les lignes n'en supprime qu'une sur deux et me laisse les lignes paires affichées (sous IE, comme Firefox)...
Ca me laisse perplexe.
Voilà le code JS
[/i][/i][/i][/i][/i][/i][/i][/i][/i]
La boucle posant problème est tout en bas...
Je fais un input[i].name.substr(3,7) pour récupérer une valeur commune à toutes les balises qui doivent être enlevée (input, label et autres).
Edit: j'ai besoin d'une précision... un truc m'échappe.
i++ ça fait bien i+1 ?
J'ai modifié ma boucle for en mettant (i+1) et là ça passe...
Modifié par BruceFeuillette (17 Oct 2007 - 11:44)
Je suis entrain de bosser sur un petit module pour effectuer des demandes d'articles.
J'ai permis à l'utilisateur d'ajouter des lignes à la volée pour demander autant d'article qu'il le souhaite.
Lorsque l'utilisateur enregistre sa demande, j'efface les lignes une par une afin qu'il voit que la demande a été prise en compte.
J'utilise donc du JS pour créer et supprimer les lignes.
Sauf que ma fonction pour supprimer les lignes n'en supprime qu'une sur deux et me laisse les lignes paires affichées (sous IE, comme Firefox)...
Ca me laisse perplexe.
Voilà le code JS
function SauveArticles(numero,id_agent,id)
{
var input=document.getElementById(id).getElementsByTagName('input');
var recap=document.getElementById('recap_art');
var liste='action=sauve_art&id_numero='+numero+'&id_agent='+id_agent;
//Variable pour vérifier que la demande ne soit pas vide
var flag=0;
//Variable pour surveiller si des lettres ont été mises
var ctrl=0;
for(var i=0;i<input.length;i++){
if((isNaN(input[i].value))&&(input[i].type=='text')&&(ctrl==0)) {
alert("Vous ne devez saisir que des chiffres et non des lettres.\nVeuillez corriger l'élément indiqué.");
input[i].focus();
ctrl++;
} else if((input[i].value!='')&&(input[i].type=='text')&&(ctrl==0)){
liste+='&article[]='+input[i].value;
flag++;
}
}
if(ctrl>0){
/*
Si on a des lettres on arrête là, le temps que l'utilisateur corrige.
On fait donc une sorte de "catch all" vide pour stopper l'opération
*/
} else if(flag==0){
//Aucun article choisi
alert("Vous n'avez pas choisi d'article.\nVotre demande n'a pas été prise en compte.");
} else {
//On envoie la demande
xmlhttp.open('POST','user_ajax.php',true);
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xmlhttp.send(liste);
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
recap.innerHTML=xmlhttp.responseText;
alert('Votre demande a été enregistrée.');
for(var i=0;i<input.length;i++){
if(input[i].type=='text'){
EnleveArticle(input[i].name.substr(3,7));
}
}
}
}
}
}
[/i][/i][/i][/i][/i][/i][/i][/i][/i]
La boucle posant problème est tout en bas...
Je fais un input[i].name.substr(3,7) pour récupérer une valeur commune à toutes les balises qui doivent être enlevée (input, label et autres).
Edit: j'ai besoin d'une précision... un truc m'échappe.
i++ ça fait bien i+1 ?
J'ai modifié ma boucle for en mettant (i+1) et là ça passe...
Modifié par BruceFeuillette (17 Oct 2007 - 11:44)