Problème de validation automatique de forumlaire avec Opera [RESOLU]

Problème de validation automatique de forumlaire avec Opera [RESOLU] - HTML/CSS - Programmation

Marsh Posté le 17-05-2006 à 17:07:39    

Bonjour à tous ;)
 
Voila, dans le but de gérer un planning de manière graphique, je passe les dates dans un tableau javascript.
Afin d'envoyer mes dates vers le serveur pour ke php puisse enregistrer tout ça, j'ai donc écrit une fonction javascript qui écrit dynamiquement un formulaire et place autant de balise input de type hidden que de valeurs à récupérer :
 
function prepareEnvoi(url, numsalar, choix)
{
    document.write("<html><body><p align='center'>Validation en cours, veuillez patienter...</p>" );
    // Création du formulaire
    document.write("<form id='validform' name='validform' action='"+url+"' method='post'>" );
    // On passe le numéro du salarié
    document.write("<input type='hidden' name='numsalar' value='"+numsalar+"'>" );
    // On passe le choix
    document.write("<input type='hidden' name='choix' value='"+choix+"'>" );
"
ICI MA BOULCE NON AFFICHEE VOLONTAIREMENT
 
    // On ferme le formulaire
    document.write("</form></body></html>" );
    // On envoie le formulaire
    document.getElementById("validform" ).submit();
}
 
Rien à dire à propos de la fonction et de la récupération de données, tout fonctionne parfaitement. Le problème que je rencontre se produit uniquement sous Opera. En effet, mon formualire n'est pas soumis, il reste planté sur la page "Validation en cours, veuillez patienter...".
 
J'ai essayé la méthode utilisé ici : "document.getElementById("validform" ).submit();" mais également "document.forms.validform.submit();" mais rien y fait... Opera serait il succeptible ou est-ce moi qui programme comme un bourrin ? :lol:

Message cité 1 fois
Message édité par benjones le 18-05-2006 à 11:28:53
Reply

Marsh Posté le 17-05-2006 à 17:07:39   

Reply

Marsh Posté le 17-05-2006 à 17:23:53    

benjones a écrit :

est-ce moi qui programme comme un bourrin ? :lol:


oui c'est vraiment pas beau ce que tu fais :o
 
Je ne comprends pas pourquoi ta page ne contient pas le formulaire dès le départ? Quel est l'interêt de le créer ainsi?
Il est peu surprenant que certains browsers n'acceptent pas la validation du formulaire issu de cette "chose"...
 
Perso je ferais comme ça:

  • page html qui contient le formulaire et les inputs hidden toujours présents
  • via une boucle, ajout des inputs hidden dans le form. Et là je me servirais plutôt du dom
  • soumission du formulaire une fois tout ça fini


 

Reply

Marsh Posté le 17-05-2006 à 17:33:15    

anapajari a écrit :

oui c'est vraiment pas beau ce que tu fais :o
 
Je ne comprends pas pourquoi ta page ne contient pas le formulaire dès le départ? Quel est l'interêt de le créer ainsi?
Il est peu surprenant que certains browsers n'acceptent pas la validation du formulaire issu de cette "chose"...


 
L'interêt, c'est que c'est la seule solution que j'ai envisagé, car au moment de la génération de la page, on ne sais pas à l'avance combien de congés vont être saisis. Sinon, en effet, j'aurai fait comme tu proposes.
 
1*PHP me génère une page.
2*Un utilisateur saisi des congés, autant qu'il veux, qui sont sauvegardés dans un tableau
3*il clique sur valider, c'est à ce moment là qu'il faut feinter pour envoyer chaque ligne du tableau au serveur, la seule que j'ai trouvé c'est de générer un formulaire par Javascript qui contient autant de input hidden que de ligne du tableau...
 
j'espère que tu comprends mieu mon problème et pourquoi j'ai effectuer cette gymnastique, qui, je l'avoue, n'est pas très belle... :lol:

Reply

Marsh Posté le 18-05-2006 à 09:07:09    

Je n'arrive toujours pas a faire fonctionner cela sous Opéra, mais ça fonctionne avec tous les autres navigateurs que je posède (IE, Netscape, Firefox...) qui sont peut être plus indulgents aux codes barbares :p
 
Si quelqu'un a une aitre idée que la méthode que j'ai employée pour envoyer des données aux serveur, ne vous génez pas ;) Je pense qu'il y a des méthodes plus propres, pour l'instant je n'ai rien trouvé d'autres, alors je suis ouvert à toutes critiques et/ou idées.
 
Merci beaucoup !!

Reply

Marsh Posté le 18-05-2006 à 09:34:20    

Ah, oui, j'avais oublié, la console Javascript d'Opéra me renvoie cette erreur :
Could not convert undefined or null to object

Reply

Marsh Posté le 18-05-2006 à 09:54:17    

t'as gardé le même code bouseux ou pas?

Reply

Marsh Posté le 18-05-2006 à 10:08:22    

oui à peu près :
 
    document.write('<p align=\'center\'>Validation en cours, veuillez patienter...</p>');
    // Création du formulaire
    document.write('<form id="validform" action="'+url+'" method="post">');
    // On passe le numéro du salarié
    document.write('<input type="hidden" name="numsalar" value="'+numsalar+'">');
    // On passe le choix
    document.write('<input type="hidden" name="choix" value="'+choix+'">');
    var nblignes = Conges.length;
    var chaine = "";
    var temp = new Array();
    var x=0;
    var colorconge="";
    for(var i=0; i<nblignes; i++)
    {
       temp = new Array();
       temp = Conges[i];
       nbtemp = temp.length;
       colorconge = colorConge(temp[0]);
       for(x=0; x<nbtemp; x++)
       {
         chaine = chaine+temp[x]+"|";
       }
       chaine = chaine+colorconge;
       document.write('<input type="hidden" name="'+(i+1)+'" value="'+chaine+'">');
       chaine="";
    }
    // On ferme le formulaire
    document.write('</form>');
    // On envoie le formulaire
    document.write('<p align=\'center\'><a href="javascript:document.getElementById(\'validform\').submit();">Cliquez ici si rien ne se passe au delà de 10 secondes</a></p>');
    // Validation automatique
    setTimeout("document.getElementById('validform').submit();",2500);

Reply

Marsh Posté le 18-05-2006 à 10:14:17    

Curieusement :
 
<a href="javascript:document.getElementById(\'validform\').submit();">Cliquez ici si rien ne se passe au delà de 10 secondes</a> Fonctionne mais pas :
 
document.getElementById('validform').submit(); tout seul...

Reply

Marsh Posté le 18-05-2006 à 10:18:24    

Oh des document.write en 2006 :o

Reply

Marsh Posté le 18-05-2006 à 10:24:45    

Hermes le Messager a écrit :

Oh des document.write en 2006 :o


 
Hihi, désolé je ne connais pas d'autres fonctions en Javascript pour écrire à l'écran. Laquelle me conseilles tu ?
 
Merci beaucoup ;)

Reply

Marsh Posté le 18-05-2006 à 10:24:45   

Reply

Marsh Posté le 18-05-2006 à 10:27:41    

Reply

Marsh Posté le 18-05-2006 à 10:29:41    

Ah, je la connais et l'ai déja utilisée pour modifier le contenus de divs flottants, autant pour moi !
 
Merci Hermes le  Messager !

Reply

Marsh Posté le 18-05-2006 à 10:29:49    


so WEB1.0 :o
 
Du dom plutot(comme je le disais plus haut): createNode et createTextNode, entre autre.

Reply

Marsh Posté le 18-05-2006 à 11:08:29    

anapajari a écrit :

so WEB1.0 :o
 
Du dom plutot(comme je le disais plus haut): createNode et createTextNode, entre autre.


 
Je ne connais pas du tout, pourrais-tu développer un peu la dessus ?
Merci beaucoup ;)

Reply

Marsh Posté le 18-05-2006 à 11:11:23    

Reply

Marsh Posté le 18-05-2006 à 11:20:35    

Merci beaucoup pour le lien, je vais regardé ça, sinon avec innerHTML, j'ai réussi ça fonctionne impec sur IE, Firefox, Netscape et OPERA !!
 
Je vais laisser comme ça je pense, à moins que j'arrive à maitriser le DOM.
 
Merci encore !

Reply

Sujets relatifs:

Leave a Replay

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