Javascript onchange ne fonctionne qu'une fois

Fermé
gabberkkc - 25 août 2008 à 09:54
 Leo - 3 févr. 2014 à 00:40
Bonjour,

J'ai un problème avec les évènements Javascript avec IE

J'ai mis un évènement onChange sur un champ texte contenu dans un <td>, de cette manière :

<td>26/09/2008</td>
<td><input id="txtFADB26022CCI02408R080800028" type="text" value="A confirmer" onFocus="javascript:this.select();" onChange="javascript:delai('CCI02408','FADB26022','R080800028');"></td>
<td>24</td>

La fonction delai() fonctionne très bien. Le problème c'est que lorsque j'actualise ma page, le onChange fonctionne (la fonction javascript delai() est éxécutée) une seule fois. Par la suite elle m'affiche toujours un message d'erreur 'Cet objet ne gère pas cette propriété ou cette méthode' sur la ligne du <input>

J'ai un peu de mal à comprendre d'où ça peut venir...

Merci d'avance de votre aide.

Etienne
A voir également:

6 réponses

societeserieuse Messages postés 172 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 3 décembre 2008 7
25 août 2008 à 09:58
salut on peut voir le javascript ?
0
affirmatif. Le voici :

function getRequest(){
var request = null;

if(window.XMLHttpRequest) //Firefox et les autres
request = new XMLHttpRequest();
else if(window.ActiveXObject){ //Internet Explorer
try {
request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
request = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else{ //XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHttpRequest...");
request = false;
}
return request;
}

function delai(cde,art,res) {

alert(cde+art+res);
var request= getRequest();

delai = document.getElementById("txt"+art+cde+res).value;
alert(delai);

if(delai != "A confirmer") {

request.onreadystatechange = function() {
if(request.readyState == 4) {
if(request.status == 200) {

var rep = request.responseText;

alert("Délai prod enregistré.");

}
}
}

data = "cde="+cde+"&art="+art+"&res="+res+"&delai="+delai;

request.open("POST","delai.php",true);
request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
request.send(data);

}

}

La fonction getRequest crée l'objet nécessaire à la requête Ajax utilisé dans la fonction delai().
Je précise que ces 2 fonctions javascript fonctionne, puisqu'elles fonctionnent très bien la 1ère fois après le rechargement de la page et qu'elles étaient utilisées sans problème avant l'ajout de l'évènement onchange

Merci de votre aide
0
societeserieuse Messages postés 172 Date d'inscription dimanche 24 août 2008 Statut Membre Dernière intervention 3 décembre 2008 7
25 août 2008 à 10:13
excuse moi mais si c'est en ajax la page ne devrait pas se recharger o_O
et ton id reste toujours la meme au 2eme tour ?
je m'explique :
delai = document.getElementById("txt"+art+cde+res).value; <----- au 2eme envoi l'id reste bien la meme que celle de ton champ ?
0
la page ne se recharge pas. La requête Ajax appelle le fichier delai.php qui enregistre le delai dans une base de données MySQl.

En fait j'ai un champ texte à chaque ligne de mon tableau. En gros le tableau contient une liste d'article, avec son numéro de commande et de réseau( c'est une appli de suivi de production) Donc je définis chaque champ texte par txtArticleCommandeReseau, comme ça chaque id est unique.

C'est moi même qui recharge la page avec actualiser pour faire des essais en fait

J'ai mis un alert au début de ma fonction javascript pour vérifier les données transmises, et en même temps pour être sûr que la fonction s'éxécute. Donc si l'erreur venait du document.getElementById, j'aurais mon alert avant l'erreur javascript.
Là le problème c'est que l'erreur se produit avant l'éxécution de la fonction, et provient apparement du onChange

En gros : ma page se charge, tout fonctionne très bien. Je fait un 1er onchange, le délai s'eregistre. Et quand je veux en faire un autre, même sur le même champ texte, il affcihe l'erreur
Si j'actualise la page, je peux refaire un seul onchange, après ça replante
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bg62 Messages postés 23647 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 3 octobre 2024 2 382
25 août 2008 à 15:27
bonjour
il n'est pas obligatoire d'être inscrit ...
mais savoir à qui l'on répond sur le forum est toujours plus agréable pour les gens qui veulent aider !
alors ...inscrivez-vous
merci
b g
0
Ca c'est malin ! en attendant la reponse m'aurait interesse moi
0