Guest User

Untitled

a guest
Mar 17th, 2010
351
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <html>
  2. <head>
  3. <script type="text/javascript" src="jquery.js"></script>
  4. <script type="text/javascript" src="jquery.validate.js"></script>
  5.  
  6. <style>
  7.     .error {
  8.         border: 1px solid red;
  9.     }
  10. </style>
  11.  
  12. </head>
  13.  
  14. <body>
  15. <div>
  16.  
  17. <!-- Affichage des messages liés à la validation des champs du formulaire -->
  18. <div class="errorDiv">
  19.   <span></span>
  20. </div>
  21.  
  22.   <form action="/scripts_php/envoyer_demande_selection.php" id="form_selection">
  23.     <!-- Liste des dates de tournées -->
  24.     <select name="list_inscription_selection" id="list_inscription_selection">
  25.       <option value="">Select a date</option>
  26.       <option value="1">Date 1</option>
  27.     </select>
  28.  
  29.     <label for="nom">Name</label><input type="text" name="nom" id="nom" class="required" /><br />
  30.     <label for="prenom">First name</label><input type="text" name="prenom" id="prenom" /><br />
  31.     <label for="societe">Company</label><input type="text" name="societe" id="societe" /><br />
  32.     <label for="adresse">Address</label><input type="text" name="adresse" id="adresse" /><br />
  33.     <label for="cp">Postcode</label><input type="text" name="cp" id="cp" /><br />
  34.     <label for="ville">City</label><input type="text" name="ville" id="ville" /><br />
  35.     <label for="tel">Phone number</label><input type="text" name="tel" id="tel" /><br />
  36.     <label for="mail">Email</label><input type="text" name="mail" id="mail" /><br />
  37.     <input type="hidden" name="nbChevaux" id="nbChevaux" value="0" /><br />
  38.     <input type="button" value="Add a horse" id="btnAddRow" /><br />
  39.  
  40.     <div id="zoneChevauxSelection">
  41.  
  42.     <table id="tableChevauxSelection">
  43.  
  44.       <tr>
  45.         <th>Name</th>
  46.         <th>Sex</th>
  47.         <th>Born</th>
  48.         <th>Colour</th>
  49.         <th>Father</th>
  50.         <th>Mother</th>
  51.       </tr>
  52.  
  53.     </table>
  54.  
  55.   <input type="submit" value="Validate"/>
  56.  
  57.   </form>
  58.  
  59.   </div>
  60. </div>
  61.  
  62.  
  63.  
  64. <script type="text/javascript">
  65.  
  66.  
  67.  
  68. /*
  69.  * Fonction qui lance la création de lignes supplémentaires dans le tableau des chevaux à inscrire
  70.  */
  71. function addRows(){
  72.   // On ne permet pas la saisie de plus de 10 chevaux
  73.   if(parseInt($("#nbChevaux").val()) < 10){
  74.     $("#nbChevaux").val(parseInt($("#nbChevaux").val()) + 1);
  75.     var nbChevaux = parseInt($("#nbChevaux").val());
  76.  
  77.     //Index permettant de nommer de façon unique les tr (afin de pouvoir les supprimer facilement)
  78.     if($("#tableChevauxSelection tr").size() > 1){
  79.       // Si des lignes ont déjà été créées dans le tableau, on se sert de l'index de la dernière qui a été créée
  80.       var indexTr = parseInt($("#tableChevauxSelection tr:last").attr('id').substr(8))+1;
  81.     }else{
  82.       // Si aucune ligne n'a été créée
  83.       var indexTr = "0";
  84.     }
  85.  
  86.     // Quelques précautions pour éviter de créer trop de lignes dans le tableau
  87.     var tr = jQuery('<tr>', {id: 'trCheval'+indexTr});
  88.     tr.append(
  89.         "<td><input type='text' id='nomCheval"+indexTr+"' name='nomCheval[]' class='nomCheval'/></td>"
  90.     );
  91.  
  92.     $("#tableChevauxSelection").append(tr);
  93.  
  94.     $("#nomCheval"+indexTr).rules("add", {horseNameRequired: true});
  95.  
  96.     // On affiche le tableau
  97.     $("#tableChevauxSelection").show();
  98.   }
  99. }
  100.  
  101. /*
  102.  * Suppression d'une ligne dans le tableau des chevaux à inscrire
  103.  */
  104. function deleteRowCheval(indexTr){
  105.   // Suppression du la ligne dans le tableau
  106.   $("#trCheval"+indexTr).remove();
  107.  
  108.   // Mise à jour du nombre de chevaux
  109.   $("#nbChevaux").val(parseInt($("#nbChevaux").val()) - 1);
  110.  
  111.   // S'il ne reste que la ligne des en-têtes, on cache le tableau
  112.   if($("#tableChevauxSelection tr").size() == 1){
  113.     $("#tableChevauxSelection").hide();
  114.   }
  115. }
  116.  
  117.  
  118. $(document).ready(function() {
  119.   // On bind la fonction addRows au bouton Valider
  120.   $("#btnAddRow").click(function(){
  121.     addRows();
  122.   });
  123.  
  124.   // Règles de validation du formulaire
  125.   $("#form_selection").validate({
  126.     rules: {
  127.       list_inscription_selection: {
  128.         required: true
  129.       },
  130.       nom: {
  131.         required: true,
  132.         minlength: 2
  133.       },
  134.       prenom: {
  135.         required: true,
  136.         minlength: 2
  137.       },
  138.       societe: {
  139.         minlength: 2
  140.       },
  141.       adresse: {
  142.         required: true,
  143.         minlength: 5
  144.       },
  145.       cp: {
  146.         required: true,
  147.         digits: true,
  148.         minlength: 5,
  149.         maxlength: 5
  150.       },
  151.       ville: {
  152.         required: true,
  153.         minlength: 2
  154.       },
  155.       tel: {
  156.         required: true,
  157.         digits: true
  158.       },
  159.       mail: {
  160.         required: true,
  161.         email: true
  162.       },
  163.       nbChevaux: {
  164.         required: true,
  165.         min: 1,
  166.         max: 10
  167.       }
  168.     },
  169.     messages: {
  170.       list_inscription_selection: {
  171.         required: "Select a date"
  172.       },
  173.       nom: {
  174.         required: "Please enter your name.",
  175.         minlength: "Please enter at least 2 characters."
  176.       },
  177.       prenom: {
  178.         required: "Please enter your first name.",
  179.         minlength: "Please enter at least 2 characters."
  180.       },
  181.       societe: {
  182.         required: "Please enter your company name.",
  183.         minlength: "Please enter at least 2 characters."
  184.       },
  185.       adresse: {
  186.         required: "Please enter your address.",
  187.         minlength: "Please enter at least 5 characters."
  188.       },
  189.       cp: {
  190.         digits: "Please enter only digits.",
  191.         required: "Please enter your zip code.",
  192.         minlength: "Please enter at least 5 characters.",
  193.         maxlength: "Please enter no more than 5 characters."
  194.       },
  195.       ville: {
  196.         required: "Please enter your city.",
  197.         minlength: "Please enter at least 2 characters."
  198.       },
  199.       tel: {
  200.         required: "Please enter your phone number.",
  201.         digits: "Please enter only digits."
  202.       },
  203.       mail: {
  204.         required: "Please enter your email.",
  205.         email: "Please enter a valid email address."
  206.       },
  207.       nbChevaux: {
  208.         required: "You must enter at least one horse.",
  209.         min: "You must enter at least one horse.",
  210.         max: "You can not enter more than 10 horses"
  211.       }
  212.     },
  213.     submitHandler: function(form) {
  214.       // On fait en sorte que le formulaire s'exécute en ajax (en POST pour éviter que l'on atteigne la limite de la chaîne de paramètres en GET
  215.       $(form).ajaxSubmit({type: 'post'});
  216.     },
  217.     invalidHandler: function(e, validator) {
  218.      
  219.       var errorNb = validator.numberOfInvalids();
  220.       if (errorNb) {
  221.        
  222.         var message = "";
  223.  
  224.         if(errorNb == 1){
  225.           message = validator.invalidElements().prevObject[0].message;
  226.  
  227.         }else{
  228.  
  229.           message += "<ul>";
  230.  
  231.           for(var i = 0; i< errorNb; i++){
  232.             message += "<li>"+validator.invalidElements().prevObject[i].message+"</li>";
  233.           }
  234.  
  235.           message += "</ul>";
  236.  
  237.         }
  238.  
  239.         $("div.errorDiv span").html(message);
  240.  
  241.         $("div.errorDiv").show();
  242.       } else {
  243.         $("div.errorDiv").hide();
  244.       }
  245.       if($(".nomCheval").size()){
  246.         $(".nomCheval .error").each(function(){
  247.           $(this).addClass("error");
  248.         });
  249.       }
  250.     },
  251.     errorPlacement: function(error,element) {
  252.       // Pour ne pas afficher les labels des messages d'erreurs
  253.       return true;
  254.     }
  255.    
  256.  
  257.   });
  258.  
  259.   // Validation des champs créés dynamiquement
  260.   $.validator.addMethod("horseNameRequired", $.validator.methods.required, "Name of the horse required");
  261.  
  262. });
  263.  
  264. </script>
  265.  
  266. </body>
  267.  
  268. </html>
Advertisement
Add Comment
Please, Sign In to add comment