Javascript onchange ne fonctionne qu'une fois
gabberkkc
-
Leo -
Leo -
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
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:
- Javascript onchange ne fonctionne qu'une fois
- Telecharger javascript - Télécharger - Langages
- Paiement 4 fois cdiscount impossible ✓ - Forum Consommation & Internet
- Imprimer plusieurs fois la même image sur une page ✓ - Forum Logiciels
- Tv lg ne s'allume plus voyant clignote 3 fois - Forum Ecran
- Sonne une fois et messagerie - Forum Samsung
6 réponses
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
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
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 ?
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 ?
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question