Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

formulaire bug dans ie et pas dans firefox

2 réponses
Avatar
Pascal
bonjour
Je ne comprends pas pourquoi mon code fonctionne dans firefox et pas dans
Iexplorer. Quelqu'un a t il une idée ?
document.myform.onsubmit = OnSubmitForm;// Là est le problème avec IE8
merci de votre aide

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from
url=(0081)http://www.javascript-coder.com/html-form/javascript-form-validation-example.html
-->
<HTML>
<HEAD>
<TITLE>JavaScript Form Validation example</TITLE>
<META content="text/html; charset=windows-1252" http-equiv=Content-Type>

<SCRIPT language=JavaScript type=text/javascript
src="./gen_validatorv31.js"></SCRIPT>
</HEAD>
<BODY>
<script language="JavaScript">
//<![CDATA[
<!--
//Choix de la page
function OnSubmitForm()
{
frm=document.forms['myform'];
if(frm.elements['matiere'][0].checked == true)
{
frm.action ="a.htm";
}
else
if(frm.elements['matiere'][1].checked == true)
{
frm.action ="b.htm";
}
return document.myform.runvalidation();

}
-->
//]]>
</script>

<blockquote><p>Pour que les résultats des élèves d'une même classe soient
enregistrés dans le même fichier,
il est impératif que chacun fasse <strong>AVANT TOUTE CHOSE</strong> le
même choix à l'étape n°1.</p></blockquote>

<form name="myform" onsubmit="return OnSubmitForm()" >
<fieldset><legend>ETAPE N°1</legend>
Choisir sa classe actuelle.<br />
<select id="classe_actuelle" name="classe_actuelle">
<option label="???" value="0">???</option>
<option label="M. Bazin" value="bazin">M. Bazin</option>
<option label="M. Chalopin" value="chalopin">M. Chalopin</option>
<option label="M. Le Morvan" value="lemorvan">M. Le Morvan</option>
<option label="Invité" value="invite">Invité</option>
</select></fieldset>


<fieldset><legend>ETAPE N°2</legend>
Choisir la matière.<br />
<input id="voca" name="matiere" type="radio" value="0" />Vocabulaire
<input id="conj" name="matiere" type="radio" value="1" />Conjugaison
<input id="gram" name="matiere" type="radio" value="2" />Grammaire
<input id="orth" name="matiere" type="radio" value="3" />Orthographe
<input id="lect" name="matiere" type="radio" value="4" />Lecture
</fieldset>

<fieldset><legend>ETAPE N°3</legend>
S'identifier.<br />
<table summary="formulaire d'inscription">
<tr><td>Entrez votre pr&eacute;nom : </td> <td><input type="text"
id="prenom" name="prenom" size="30"/></td></tr>
<tr><td>Entrez votre nom : </td> <td> <input type="text" id="nom"
name="nom" size="30"/></td></tr>
<tr><td>De quel sexe êtes vous ?</td> <td>
<input type="radio" id="sexeH" name="sexe" value="Garçon"/> <label
for="sexeH">Garçon</label>
<input type="radio" id="sexeF" name="sexe" value="Fille"/> <label
for="sexeF">Fille</label></td></tr>
<tr><td><label for="classe">Entrez votre classe d'origine : </label></td>
<td>
<select id="classe_origine" name="classe_origine">
<option value="0">???</option>
<option value="Bazin">Bazin</option>
<option value="Le Morvan">Le Morvan</option>
<option value="Autre">Autre</option>
</select></td></tr>
<tr><td><input name="submit" type="submit"
value="S'inscrire"/></td><td><input type="reset" value="Effacer"/></td></tr>
</table>

</fieldset>
</form>

<div id='myform_errorloc' class='error_strings'></div>

<SCRIPT language=JavaScript type=text/javascript>
var frmvalidator = new Validator("myform");
//frmvalidator.EnableOnPageErrorDisplaySingleBox();
frmvalidator.EnableMsgsTogether();
frmvalidator.addValidation("classe_actuelle","dontselect=0","Quelle est ta
classe actuelle?");
frmvalidator.addValidation("matiere","selone_radio","Choisis une
matière.");
frmvalidator.addValidation("prenom","req","Ecris ton prénom.");
frmvalidator.addValidation("prenom","alpha");
frmvalidator.addValidation("nom","req","Ecris ton nom.");
frmvalidator.addValidation("nom","alpha");
frmvalidator.addValidation("sexe","selone_radio","Es-tu un garçon ou une
fille?");
frmvalidator.addValidation("classe_origine","dontselect=0","Quelle est ta
classe d'origine?");
</SCRIPT>

<script language="JavaScript">
document.myform.runvalidation = document.myform.onsubmit;
document.myform.onsubmit = OnSubmitForm;// here is the problem with IE8
</script>

</BODY></HTML
--
http://www.scalpa.info
http://scalpa98.blogspot.com/
http://scalpa-production.blogspot.com/

2 réponses

Avatar
SAM
Le 8/19/09 3:33 PM, Pascal a écrit :
bonjour
Je ne comprends pas pourquoi mon code fonctionne dans firefox et pas
dans Iexplorer. Quelqu'un a t il une idée ?



Est-ce que IE dit qu'il y a une erreur ?
Et laquelle ?

Je n'ai pas vu où étaient déclarées les fonctions :

Validator("myform");
(pour : frmvalidator = new Validator("myform"); )
et :
frmvalidator.addValidation( blablas )

Sans doute dans :
<http://www.javascript-coder.com/html-form/gen_validatorv31.js>
... 17ko de JS ... !
... est-ce vraiment nécessaire tout ce bintz pour "valider" un simple
formulaire de qques inputs ?

document.myform.onsubmit = OnSubmitForm;// Là est le problème avec IE8
merci de votre aide



Moi, je dirais que le form n'a pas d'action :
<form name="myform" onsubmit="return OnSubmitForm()" >
essayer avec :
<form action="#" name="myform" onsubmit="return OnSubmitForm()" >

Mais comme l'dée serait d'utiliser "gen_validatorv31.js", le onsubmit ne
serait pas nécessaire.
(danger: hors JavaScript ==> pas de submit ! ! !)

De plus je ne comprends pas le mécanisme à la fin
document.myform.runvalidation = document.myform.onsubmit;
document.myform.onsubmit = OnSubmitForm;
il y a déjà d'entrée de jeu un : onsubmit="return OnSubmitForm()"
qui appelle : document.myform.runvalidation
Ça ne se mord pas un peu la queue ?

document.myform.onsubmit = function() { OnSubmitForm(); };
ou :
document.myform.onsubmit = function() { return OnSubmitForm(); };
Mais ... y a des chances que ça vienne en contradiction avec la ligne
précédente (...runvalidation), non ?
D'autant que je n'ai pas vu d'où sortait ce 'runvalidation'

N'y aurait-il pas plus simple à valider ce formulaire ?
(déjà vu par ailleurs, ce me semble ?)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">



le doctype est incomplet ou incorrect ou démodé :

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

voir :
<http://www.w3.org/QA/2002/04/valid-dtd-list.html>

<!-- saved from
url=(0081)http://www.javascript-coder.com/html-form/javascript-form-validation-example.html



blabla IE (ou Mark of the Web from Microsoft)
complètement inutile puisque ne correspond pas à la page web citée ...
Voir :
<http://msdn.microsoft.com/en-us/library/ms537628(VS.85).aspx>

-->
<HTML>
<HEAD>
<TITLE>JavaScript Form Validation example</TITLE>
<META content="text/html; charset=windows-1252" http-equiv=Content-Type>

<SCRIPT language=JavaScript type=text/javascript



ce serait mieux avec :
<SCRIPT type="text/javascript"

src="./gen_validatorv31.js"></SCRIPT>
</HEAD>
<BODY>
<script language="JavaScript">



ce serait mieux avec :
<script type="text/javascript">

//<![CDATA[



on est en "transitonal",
pas certain que le bidulesque CDATA soit nécessaire.

<!-- //Choix de la page
function OnSubmitForm()
{
frm=document.forms['myform'];
if(frm.elements['matiere'][0].checked == true)
{
frm.action ="a.htm";
}
else
if(frm.elements['matiere'][1].checked == true)
{
frm.action ="b.htm";
}
return document.myform.runvalidation();



et que bidouille ce runvalidation ?
(si tant est que "document.myform.runvalidation();" ait un sens)

}
-->
//]]>
</script>

<blockquote><p>Pour que les résultats des élèves d'une même classe
soient enregistrés dans le même fichier,
il est impératif que chacun fasse <strong>AVANT TOUTE CHOSE</strong> le
même choix à l'étape n°1.</p></blockquote>

<form name="myform" onsubmit="return OnSubmitForm()" >
<fieldset><legend>ETAPE N°1</legend>
Choisir sa classe actuelle.<br />
<select id="classe_actuelle" name="classe_actuelle">
<option label="???" value="0">???</option>
<option label="M. Bazin" value="bazin">M. Bazin</option>
<option label="M. Chalopin" value="chalopin">M. Chalopin</option>
<option label="M. Le Morvan" value="lemorvan">M. Le Morvan</option>
<option label="Invité" value="invite">Invité</option>
</select></fieldset>


<fieldset><legend>ETAPE N°2</legend>
Choisir la matière.<br />
<input id="voca" name="matiere" type="radio" value="0" />Vocabulaire
<input id="conj" name="matiere" type="radio" value="1" />Conjugaison
<input id="gram" name="matiere" type="radio" value="2" />Grammaire
<input id="orth" name="matiere" type="radio" value="3" />Orthographe
<input id="lect" name="matiere" type="radio" value="4" />Lecture
</fieldset>

<fieldset><legend>ETAPE N°3</legend>
S'identifier.<br />
<table summary="formulaire d'inscription">
<tr><td>Entrez votre pr&eacute;nom : </td> <td><input type="text"
id="prenom" name="prenom" size="30"/></td></tr>
<tr><td>Entrez votre nom : </td> <td> <input type="text" id="nom"
name="nom" size="30"/></td></tr>
<tr><td>De quel sexe êtes vous ?</td> <td>
<input type="radio" id="sexeH" name="sexe" value="Garçon"/>
<label for="sexeH">Garçon</label>
<input type="radio" id="sexeF" name="sexe" value="Fille"/> <label
for="sexeF">Fille</label></td></tr>
<tr><td><label for="classe">Entrez votre classe d'origine : </label></td>
<td>
<select id="classe_origine" name="classe_origine">
<option value="0">???</option>
<option value="Bazin">Bazin</option>
<option value="Le Morvan">Le Morvan</option>
<option value="Autre">Autre</option>
</select></td></tr>
<tr><td><input name="submit" type="submit"
value="S'inscrire"/></td><td><input type="reset"
value="Effacer"/></td></tr>
</table>

</fieldset>
</form>

<div id='myform_errorloc' class='error_strings'></div>

<SCRIPT language=JavaScript type=text/javascript>
var frmvalidator = new Validator("myform");
//frmvalidator.EnableOnPageErrorDisplaySingleBox();
frmvalidator.EnableMsgsTogether();
frmvalidator.addValidation("classe_actuelle","dontselect=0","Quelle est
ta classe actuelle?");
frmvalidator.addValidation("matiere","selone_radio","Choisis une
matière.");
frmvalidator.addValidation("prenom","req","Ecris ton prénom.");
frmvalidator.addValidation("prenom","alpha");
frmvalidator.addValidation("nom","req","Ecris ton nom.");
frmvalidator.addValidation("nom","alpha");
frmvalidator.addValidation("sexe","selone_radio","Es-tu un garçon ou
une fille?");
frmvalidator.addValidation("classe_origine","dontselect=0","Quelle est
ta classe d'origine?");
</SCRIPT>

<script language="JavaScript">
document.myform.runvalidation = document.myform.onsubmit;
document.myform.onsubmit = OnSubmitForm;// here is the problem with IE8
</script>

</BODY></HTML


Avatar
pascal scalpa
Bonjour et merci de tous ces commentaires constructifs.

Cette validation du formulaire ne me plaît pas du tout non plus, elle
est est lourde et se mord la queue comme vous dites... Après bien des
déboires, il semblerait que c'était parce que j'avais gardé une
déclaration <SCRIPT language=JavaScript type=text/javascript etc dan s
le fichier gen_validatorv31.js que la page "merdouillait"...
Je n'ai pas trouvé sur internet une façon moins lourde et plus
élégante de tester le formulaire en question (voir en ligne ici la
version en question http://www.scalpa.info/rentree)
J'avais gardé ça <!-- saved from > url=(0081)http://www.javascript-
coder.com/html-form/javascript-form-validation-... afin que les
membres du groupe sachent d'où venait le code.... dont je ne suis que
le pompeur!
merci encore
pascal