Petite question en Javascript

31 réponses
AuteurMessage

Zalex14 |
Modérateur

Photo de Zalex14

Inscrit le : 09/05/2005

# Le 01/06/2008 à 16:20

Je rencontre un problème sous IE6 que je comprend pas.

Avec ce code, impossible de soumettre le formulaire :


<script type="text/javascript">
function verif() {
if(document.getElementById("val1").value == "")
alert("champ 1 vide");
else
if(document.getElementById("val2").value == "")
alert("champ 2 vide");
else
document.getElementById("form_prix").submit();
}
</script>

<form id="form_prix" action="" method="GET">
<hidden id="val1" value="1">
<hidden id="val2" value="2">
<a href="javascript:;" onclick="verif()">Test</a>
</form>


Evidemment ca fonctionne avec IE7 et Firefox toutes versions...
Quelqu'un a une idée ?
document.getElementById("nom_du_form").submit(); n'est pas reconnu par IE 6 ?

Mieux vaut s'attendre au prévisible que d'être surpris par l'inattendu.

devtribu | Olivier
Modérateur

Photo de devtribu

Inscrit le : 16/06/2005

# Le 01/06/2008 à 16:33

C'est un peu etrange d'utiliser getElementById pour acceder a un form...
Cette methode est plus utilisée pour acceder au modele DOM
Je suppose que l'objet retourné n'est pas du bon type pour supporter le submit

vite fait, en plus leger :


<script type="text/javascript">

function verif(f) {

if(f.val1.value == "")

alert("champ 1 vide");

else

if(f.val2.value == "")

alert("champ 2 vide");

else

f.submit();

}

</script>


<form id="form_prix" action="" method="GET">

<hidden id="val1" value="1">

<hidden id="val2" value="2">

<a href="javascript:;" onclick="verif(this.form)">Test</a>

</form>

Février 2019, mon futur livre Tout JavaScript chez Dunod https://amzn.to/2PoLd0fOuvrir dans une nouvelle fenetre

Zalex14 | Alexandre
Modérateur

Photo de Zalex14

Inscrit le : 09/05/2005

# Le 01/06/2008 à 17:02

En fait, à la base j'avais fait ta méthode mais cela ne fonctionnait pas.

Si je copie/colle ta version : http://www.partoch.com/test.htmlOuvrir dans une nouvelle fenetre

J'ai pour firefox :
"Erreur : f has no properties
Ligne : 9"

et pour IE6 et IE7 :
"val1 a la valeur NULL ou n'est pas un objet".

C'est pour cela que je passais par document.getElementById

Mieux vaut s'attendre au prévisible que d'être surpris par l'inattendu.

devtribu | Olivier
Modérateur

Photo de devtribu

Inscrit le : 16/06/2005

# Le 01/06/2008 à 17:12

ha oui, j'avais pas vu que tu avais mis un lien <a> au lieu d'un bouton classique...

Faut simplement changer :
<form NAME="form_prix">

onclick="verif(document.form_prix)"

Février 2019, mon futur livre Tout JavaScript chez Dunod https://amzn.to/2PoLd0fOuvrir dans une nouvelle fenetre

Zalex14 | Alexandre
Modérateur

Photo de Zalex14

Inscrit le : 09/05/2005

# Le 01/06/2008 à 17:16

Effectivement ca fonctionne sous IE7 et Firefox, mais aucune réaction coté IE 6
Je vais quand même voir si c'est pas mon IE qui déconne...

Merci quand même.

Ps : quelqu'un connaitrait un debugger javascript sous IE ?

Mieux vaut s'attendre au prévisible que d'être surpris par l'inattendu.

devtribu | Olivier
Modérateur

Photo de devtribu

Inscrit le : 16/06/2005

# Le 01/06/2008 à 17:21

c'est pas possible
c'est ton ie6 qui deconne je pense
Ou alors il n'aime pas le action vide...

Février 2019, mon futur livre Tout JavaScript chez Dunod https://amzn.to/2PoLd0fOuvrir dans une nouvelle fenetre

Zalex14 | Alexandre
Modérateur

Photo de Zalex14

Inscrit le : 09/05/2005

# Le 01/06/2008 à 18:07

Bon bah je viens de tester sur mon vieux HP E-vectra, installation Windows 2000 avec IE 5 d'origine (rien d'installé sur le système à part winzip) : idem. Aucune réaction de la page, pas d'erreur mais rien ne se passe.

J'ai fini par tester avec un
<input name="bouton" type="button" value="bouton" onclick="verif(document.form_prix)">
plutôt qu'un lien et sa fonctionne......

Super, j'ai un paquet de form avec des boutons css à base de liens à modifier.

Mieux vaut s'attendre au prévisible que d'être surpris par l'inattendu.

Zalex14 | Alexandre
Modérateur

Photo de Zalex14

Inscrit le : 09/05/2005

# Le 01/06/2008 à 18:39

Arff, j'ai trouvé !
Faut :
<a href="javascript:verif(document.form_prix)" >Test</a>
et non :
<a href="javascript:;" onclick="verif(document.form_prix)">Test</a>

Visiblement le onclick sur une balise A bloque les validations de form sur IE 6 et inférieurs...

Mieux vaut s'attendre au prévisible que d'être surpris par l'inattendu.

caaptusss | Jérémy
Membre

Photo de caaptusss

Inscrit le : 25/09/2007

# Le 01/06/2008 à 18:44

Tient en parlant JS (je suis un gros nul), vous auriez pas une portion de code qui permet de changer la couleur de la bordure d'un champ si celui ci est vide lors du changement de tabulation (ou de clic) ?

FirstHeberg.comOuvrir dans une nouvelle fenetre

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 01/06/2008 à 18:54

et avec un "return false;" dans le onclick, ça marchait pas Zalex ?

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

Zalex14 | Alexandre
Modérateur

Photo de Zalex14

Inscrit le : 09/05/2005

# Le 01/06/2008 à 19:08

Ha bah si !
J'avais pas pensé..
Merci Bool

Mieux vaut s'attendre au prévisible que d'être surpris par l'inattendu.

tonguide | Jeremy
Modérateur

 

Inscrit le : 09/05/2005

# Le 01/06/2008 à 19:12

Bool a dit :
et avec un "return false;" dans le onclick, ça marchait pas Zalex ?

+1

Caaptusss :
onblur="fonction_pour_couleur_bordure('idDuChamp',this.form);"
dans ton <input>

et ta fonction, un truc du genre

function fonction_pour_couleur_bordure(id, form)
{
if (ton champ est vide) {
document.getElementById(id).style.borderColor = 'red';
} else {
la couleur normal
}
}

caaptusss | Jérémy
Membre

Photo de caaptusss

Inscrit le : 25/09/2007

# Le 01/06/2008 à 19:24

oki merci, je vais regarder à ça

FirstHeberg.comOuvrir dans une nouvelle fenetre

mirage | Vincent
Modérateur

Photo de mirage

Inscrit le : 04/05/2005

# Le 01/06/2008 à 19:44

Quand je vois tout le code qu'il faut écrire pour faire si peu, je me dis que je suis bien comptant d'utiliser un framework JS (jQuery)

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 01/06/2008 à 19:57

Béh j'ai beau utiliser un framework JS (Mootools pour le moment, probablement YIU à l'avenir), ça ne m'empêche pas de faire les tests ci dessus.
Et pour le document.getElementById pour le moment je me refuse à utiliser les raccourcis Mootools, qui ne font que ralentir (un chouilla c'est vrai) les traitements.

Tu aurais un exemple d'équivalent via jQuery ?

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

tonguide | Jeremy
Modérateur

 

Inscrit le : 09/05/2005

# Le 01/06/2008 à 22:10

FW c'est bien pour une page qui a réellement besoin de JS en masse.
Sinon, je vais pas charger un fichier blindé de JS si l'action est minime et/ou doit être faites sur toutes les pages.

Mais c'est vrai que pour un formulaire, j'utilise Mootools.

mirage | Vincent
Modérateur

Photo de mirage

Inscrit le : 04/05/2005

# Le 02/06/2008 à 10:20

Bool a dit :
Tu aurais un exemple d'équivalent via jQuery ?

J'ai pas d'exemple particulier pour ce cas mais l'exemple de la doc, avec un peu d'adaptation, permet de faire ça plus rapidement (exempleOuvrir dans une nouvelle fenetre ).

Perso, je préfère charger un JS de 16kb et gagner du temps

tonguide | Jeremy
Modérateur

 

Inscrit le : 09/05/2005

# Le 02/06/2008 à 10:38

Il faut pas oublier que derrière le poids de 16ko, il y a l'analyse par le navigateur de ce fichier javascript. (c'est pas une simple image)

Même si ils sont généralement pensés pour ne pas être trop lourd à analyser, si on peut faire sans pour une action minime, je pense que c'est mieux.

D'ailleurs, est-ce que quelqu'un a essayé de mettre Adsense en fin de page, et de le remettre à le bonne place avec Javascript ? Je le ferai bien, mais j'ai peur qu'ils me sortent des adsenses sans rapport.
Je dois dire que le ralentissement du à Adsense m'énerve (vu que le navigateur s'arrête le temps de charger le JS d'Adsense). ça ralentit très sensiblement un site.

Zalex14 | Alexandre
Modérateur

Photo de Zalex14

Inscrit le : 09/05/2005

# Le 02/06/2008 à 10:50

plutôt avec css qu'avec javascript non ?

Mieux vaut s'attendre au prévisible que d'être surpris par l'inattendu.

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 02/06/2008 à 10:51

mirage a dit :
J'ai pas d'exemple particulier pour ce cas mais l'exemple de la doc, avec un peu d'adaptation, permet de faire ça plus rapidement (exempleOuvrir dans une nouvelle fenetre ).


Avec cet exemple, je ne vois pas bien le gain de temps en fait, mis a part pour le fade.

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

Répondre

Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.

© MHN - Tous droits réservés | CNIL N°844440 | 24/11/2024 3:32:49 | Généré en 7.67ms | Contacts | Mentions légales |