Problème de validation automatique de forumlaire avec Opera [RESOLU] - HTML/CSS - Programmation
Marsh Posté le 17-05-2006 à 17:23:53
benjones a écrit : est-ce moi qui programme comme un bourrin ? |
oui c'est vraiment pas beau ce que tu fais
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:
Marsh Posté le 17-05-2006 à 17:33:15
anapajari a écrit : oui c'est vraiment pas beau ce que tu fais |
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...
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
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 !!
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
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);
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...
Marsh Posté le 18-05-2006 à 10:24:45
Hermes le Messager a écrit : Oh des document.write en 2006 |
Hihi, désolé je ne connais pas d'autres fonctions en Javascript pour écrire à l'écran. Laquelle me conseilles tu ?
Merci beaucoup
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 !
Marsh Posté le 18-05-2006 à 10:29:49
Hermes le Messager a écrit : innerHTML |
so WEB1.0
Du dom plutot(comme je le disais plus haut): createNode et createTextNode, entre autre.
Marsh Posté le 18-05-2006 à 11:08:29
anapajari a écrit : so WEB1.0 |
Je ne connais pas du tout, pourrais-tu développer un peu la dessus ?
Merci beaucoup
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 !
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 ?
Message édité par benjones le 18-05-2006 à 11:28:53