Bonjour,

Voilà, je vous explique mon problème. J'ai un formulaire simple qui commence par un champ select qui a l'id #type. Et en bas, il y a un champ date qui est par défaut en Display:none.

Ce que j'aimerais faire, c'est que le champ avec #date s'affiche quand l'utilisateur clique sur le champ du select qui a la valeur 3

J'ai donc fait ceci en jQuery :

if($("#type").val() == 3){
    $("#date").fadeIn("slow");
}

$("*#type").click(function(){
    valeur = $(this).attr("value");
    if(valeur == 3){$("#date").fadeIn("slow");}
    else{$("#date").fadeOut("slow");}
    return valeur;})

Ce code fonctionne, mais uniquement sur Firefox... Comment faire pour que cela fonctionne partout (Chrome, Safari et IE) ?

Merci d'avance !

5 réponses


Davixs27
Auteur
Réponse acceptée

Un ami m'a donner une autre solution qui fonctionne ! Je la mets pour ceux que ça intéresse !

$(document).ready(function(){
$('#date').hide();
$('select').change(function(){
if($(this).val()=='Autres'){
$('#date').show();
}
else{
$('#date').hide();
}
});
});

Voilà

Merci quand même ;-)

bonjour,

ajoute var devant valeur.
En javascript il faut toujours déclarer les variables pour éviter les bugs sur ie
A la fin de ton code ajoute aussi un ';' pour fermer correctement ta ligne.
Tu as aussi une petite étoile qui s'est glissée dans le sélecteur ligne 5.
La valeur que tu récupères est surement dans un format string, donc il faut la transformer en int avec la fonction parseInt pour éviter les bug

Et bien sur il faut placer le tous dans le ready de jquery pour vérifier que la page est bien chargé.

Finale :

jQuery(document).ready(function($){
    if(parseInt($("#type").val()) == 3){
        $("#date").fadeIn("slow");
    }

    $("#type").click(function(){
        var valeur = parseInt($(this).attr("value"));
        if(valeur == 3){
            $("#date").fadeIn("slow");
        }else{
            $("#date").fadeOut("slow");
        }
        return valeur;
    });
});
Davixs27
Auteur

Merci de ton aide Jbou43 ! Mais malheureusement, ça ne fonctionne pas...

on peut avoir le code html ?

Davixs27
Auteur

Oui, par contre le value et le texte des options sont appeler en PHP

<form action="<?=$_SERVER'PHP_SELF']?>" method="post" id="article" enctype="multipart/form-data">
                <label for="Type">Type</label><br />
                <select name="Type" id="type">
                 <?php
                while ($donnees = $reponse->fetch())
                {
                ?>    
                <option value="<?php echo (htmlspecialchars($donnees'id'])); ?>"><?php echo (htmlspecialchars($donnees'nom'])); ?></option>
                <?php
                }
                 ?>
                </select>
                <br />
                <label for="Titre">Titre</label><br /><input type="text" name="Titre" id="titre" /><span class="erreur"></span><br />
                 <label for="Image">Image</label><br /><input type="file" name="image" class="file" id="file" /><span class="erreur"></span><br />
                <div id="date"><label for="Debut">Debut des cours</label><br /><input type="text" name="Debut" id="debut" /><span class="erreur"></span><br /></div>
                <textarea rows="10" name="Contenu" id="Contenu" style="width:500px;"></textarea> 
                <input class="envoyer" type="submit" id="envoyer" name="submit" value="Envoyer" />
                </form>