IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

ajax formulaire dialogue.


Sujet :

jQuery

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 42
    Par défaut ajax formulaire dialogue.
    Bonjour,

    j'ai un problème pour soumettre mon formulaire.
    Un morceau de code vaut mieu qu'un long discours :

    Fichier "index.php?page=deposer_trajet.php"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    <div id="rep" class="ui-widget ui-widget-content ui-corner-all"></div>
      	<div class="mybox">Ajouter un v&eacute;hicule</div>
    	<div id="monid"></div>
        <script type="text/javascript" src="Javascript/jquery-1.4.2.min.js"></script>
        <script type="text/javascript" src="Javascript/jquery-ui-1.8.4.custom.min.js"></script>
     
        <script type="text/javascript">
        $(document).ready(function() {
    	    $('.mybox').click(function(){
    	      var monurl = "add_vehicule.php";
    	      $("#monid").load(monurl, function() {
    	          $(this).dialog({
    	             height: 'auto',
    	             width:'auto',
    	             modal: true,
    	             position: 'middle',
    	             overlay: {
    	                     backgroundColor: '#000',
    	                     opacity: 0.5
    	             }
    	          });
    	      });
    		});
        });
        </script>
    //je créé un formulaire dans une boite de dialogue

    fichier "add_vehicule.php"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
     
    <script type="text/javascript">
    $(function(){
    	$("#enregistrer").click( function(){
    		valid=true;
    		if($('#marque').val() == ""){
    			$('#marque').css("border-color","#FF0000");
    			$('#marque').next(".error-message").fadeIn().text("Veuillez entrer la marque de votre v\351hicule");
    		}else{
    			$('#marque').css("border-color","#00FF7F");
    			$('#marque').next(".error-message").fadeOut();
    			valid=false;
    		}
     
    		if($('#modele').val() == ""){
    			$('#modele').css("border-color","#FF0000");
    			$('#modele').next(".error-message").fadeIn().text("Veuillez entrer le mod\350le de votre v\351hicule");
    		}else{
    			$('#modele').css("border-color","#00FF7F");
    			$('#modele').next(".error-message").fadeOut();
    			valid=false;
    		}
     
    		if($('#nbplaces').val() == ""){
    			$('#nbplaces').css("border-color","#FF0000");
    			$('#nbplaces').next(".error-message").fadeIn().text("Veuillez entrer le nombre de places de votre v\351hicule");
    		}else{
    			$('#nbplaces').css("border-color","#00FF7F");
    			$('#nbplaces').next(".error-message").fadeOut();
    			valid=false;
    		}
     
    		if($('#carburant').val() == ""){
    			$('#carburant').css("border-color","#FF0000");
    			$('#carburant').next(".error-message").fadeIn().text("Veuillez entrer le type de carburant que consomme votre v\351hicule");
    		}else{
    			$('#carburant').css("border-color","#00FF7F");
    			$('#carburant').next(".error-message").fadeOut();
    			valid=false;
    		}
     
    		if($('#conso').val() == ""){
    			$('#conso').css("border-color","#FF0000");
    			$('#conso').next(".error-message").fadeIn().text("Veuillez entrer la consommation en litres de votre v\351hicule pour 100 kilom\350tres parcourus");
    		}else{
    			$('#conso').css("border-color","#00FF7F");
    			$('#conso').next(".error-message").fadeOut();
    			valid=false;
    		}
     
     
    		if (valid==true) {		////le coeurs du probleme...					 
    			$.ajax({ 
    				type: "POST", 
    				url: "index.php?page=deposer_trajet.php",
    				data: "marque="+$("#marque").val()+"&modele="+$("#modele").val()+"&nbplaces="+$("#nbplaces").val()+"&carburant="+$("#carburant").val()+"&conso="+$("#conso").val();
    				}
    			});
    		});
     
     
    	});
     
    	$("#annuler").click( function(){
    		$("#monid").dialog('close');
    	});
    });
     
    </script>
     
     
    <style type="text/css">
    	.error-message{
    		padding: 0 0 0 30px;
    		display: inline;
    		color: #ff5b5b;
    		display: none;
    	}
    </style>
     
     
    <?php $envoyer=true; ?>
     
    <form action="./" method="post" id="form1" name="form1">
            <fieldset>
                    <table>
                            <tr>
                                    <td>
                                            <label for="marque">Marque:</label>
                                    </td>
                                    <td>
                                            <input type="text" id="marque" name="marque" class="ui-widget-content" size="30" value="" />
    										<div class="error-message"></div>
     
                                    </td>
                            </tr>
    						<tr>
                                    <td>
                                            <label for="modele">Mod&egrave;le:</label>
                                    </td>
                                    <td>
                                            <input type="text" id="modele" name="modele" class="ui-widget-content" size="30" value="" />
    										<div class="error-message"></div>
     
    								</td>
                            </tr>
    						<tr>
                                    <td>
                                            <label for="nbplaces">Nombre de places:</label>
                                    </td>
                                    <td>
                                            <input type="text" id="nbplaces" name="nbplaces" class="ui-widget-content" size="30" value="" />
    										<div class="error-message"></div>
     
    								</td>
                            </tr>
    						<tr>
                                    <td>
                                            <label for="carburant">Carburant:</label>
                                    </td>
                                    <td>
                                            <input type="text" id="carburant" name="carburant" class="ui-widget-content" size="30" value="" />
    										<div class="error-message"></div>
     
    								</td>
                            </tr>
    						<tr>
                                    <td>
                                            <label for="conso">Consommation au 100km:</label>
                                    </td>
                                    <td>
                                            <input type="text" id="conso" name="conso" class="ui-widget-content" size="30" value="" />
    										<div class="error-message"></div>
     
    								</td>
                            </tr>
                    </table>
            </fieldset>
     
    		<input type="button" id="enregistrer" value="Enregistrer" />
    		<input type="button" id="annuler" value="Annuler" />
    </form>
    je souhaiterai que lorsque je valide mon formulaire, la boite de dialogue se ferme et que les données de celui-ci soit transmise en post a la page "index.php?page=deposer_trajet.php"


    Toute aide est la bienvenue ^^

    Merci :jap:

  2. #2
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    T'as essayé en mettant un champ caché avec la page que tu souhaites ? Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form action="index.php" method="post" id="form1" name="form1">
      <input type="hidden" name="page" value="deposer_trajet.php"/>
      <!-- reste du formulaire -->
    </form>

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 42
    Par défaut
    Je ne comprends pas bien comment faire là.

    Le probleme est que si je valide mon formulaire avec un input "submit" alors il sera envoyé meme si ma condition valid est false.
    Donc jai mis un input "button" mais a ce moment la mon formulaire n'est jamais envoyé.
    Il faudrait que je puisse soumettre mon formulaire en post de javascript vers ma page php si ma condition valid = true.

    Peut etre en changeant ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if (valid==true) {		////le coeurs du probleme...					 
    			$.ajax({ 
    				type: "POST", 
    				url: "index.php?page=deposer_trajet.php",
    				data: "marque="+$("#marque").val()+"&modele="+$("#modele").val()+"&nbplaces="+$("#nbplaces").val()+"&carburant="+$("#carburant").val()+"&conso="+$("#conso").val();
    				}
    		});
    });

  4. #4
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Ah ! J'avais pas compris que le problème était là.

    Deux solutions s'offrent à toi :
    • Ajouter un onsubmit au formulaire (solution propre) :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      <form action="index.php" method="post" id="form1" name="form1" onsubmit="return valid">
      Dans ce cas il faut bien entendu que la valeur de ce "valid" ait déjà été calculée. Si ce n'est pas le cas, appelle une fonction javascript qui calculera ce booléen dans le onsubmit.
    • Valider le formulaire en javascript (solution plus sale selon moi car plus dangereuse : si jamais quelqu'un reprend ton code et veut utiliser des input type submit, il y'aura un risque de double validation du formulaire) :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      document.getElementById("form1").submit();

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 42
    Par défaut
    J'ai utilisé la solution sale mais plus compréhensible ^^ ça marche nikel.

    Merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Ajax & formulaire (BIS)
    Par bronon dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 18/03/2008, 17h42
  2. [Prototype] Ajax & formulaire (encore et toujours !)
    Par bronon dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 10/03/2008, 13h19
  3. AJAX - Formulaire qui ne se met pas à jour
    Par wenijah dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/11/2007, 10h31
  4. [AJAX] [Scriptaculous] Ajax et dialogue serveur
    Par roudoudouduo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/09/2007, 17h09
  5. [AJAX] Ajax, formulaire, div et select
    Par n8ken dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/09/2006, 10h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo