Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/02/2011, 21h07   #1
Invité de passage
 
Inscription : décembre 2006
Messages : 33
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 33
Points : 3
Points : 3
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 :
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 :
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:
alex7532 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 10h12   #2
Membre Expert
 
Avatar de Loceka
 
Tlouye Ci
Inscription : mars 2004
Messages : 1 450
Détails du profil
Informations personnelles :
Nom : Tlouye Ci

Informations forums :
Inscription : mars 2004
Messages : 1 450
Points : 2 149
Points : 2 149
T'as essayé en mettant un champ caché avec la page que tu souhaites ? Exemple :
Code :
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>
Loceka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 11h23   #3
Invité de passage
 
Inscription : décembre 2006
Messages : 33
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 33
Points : 3
Points : 3
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 :
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();
				}
		});
});
alex7532 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 12h13   #4
Membre Expert
 
Avatar de Loceka
 
Tlouye Ci
Inscription : mars 2004
Messages : 1 450
Détails du profil
Informations personnelles :
Nom : Tlouye Ci

Informations forums :
Inscription : mars 2004
Messages : 1 450
Points : 2 149
Points : 2 149
Ah ! J'avais pas compris que le problème était là.

Deux solutions s'offrent à toi :
  • Ajouter un onsubmit au formulaire (solution propre) :
    Code :
    <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 :
    document.getElementById("form1").submit();
Loceka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 17h30   #5
Invité de passage
 
Inscription : décembre 2006
Messages : 33
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 33
Points : 3
Points : 3
J'ai utilisé la solution sale mais plus compréhensible ^^ ça marche nikel.

Merci beaucoup.
alex7532 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h27.


 
 
 
 
Partenaires

Hébergement Web