Petite question en Javascript

33 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
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>

Application Beauté-test mobile iPhone iPadOuvrir dans une nouvelle fenetre
Application Beauté-test mobile AndroidOuvrir dans une nouvelle fenetre

Zalex14
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
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)"

Application Beauté-test mobile iPhone iPadOuvrir dans une nouvelle fenetre
Application Beauté-test mobile AndroidOuvrir dans une nouvelle fenetre

Zalex14
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
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...

Application Beauté-test mobile iPhone iPadOuvrir dans une nouvelle fenetre
Application Beauté-test mobile AndroidOuvrir dans une nouvelle fenetre

Zalex14
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
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
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 | Régie PublicitaireOuvrir dans une nouvelle fenetre | Hébergement GratuitOuvrir dans une nouvelle fenetre

Bool
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 ?

Google is watching you.

Zalex14
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
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
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 | Régie PublicitaireOuvrir dans une nouvelle fenetre | Hébergement GratuitOuvrir dans une nouvelle fenetre

mirage
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
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 ?

Google is watching you.

tonguide
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
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
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
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
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

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.