Rajout formule dans script

Rajout formule dans script - Javascript/Node.js - Programmation

Marsh Posté le 05-09-2015 à 13:14:10    

Bonjour à toutes et à tous !
 
Voilà, pour être brève, je suis correctrice de textes en français (le client me soumet son document, je corrige l'orthographe, la grammaire, la syntaxe, etc.). Il s'agit d'un travail rémunéré. Je dispose d'un site internet.
 
J'ai installé un formulaire de devis en ligne permettant au client de connaître le tarif de la prestation.
Il inscrit le nombre de lettres, coche la formule choisie (1,2 ou 3) ainsi que son statut (étudiant, particulier ou professionnel) et le prix apparaît.
 
Au départ, je ne proposais que deux formules (1 et 2). Mais je souhaite en proposer une troisième (le prix sera plus élevé).
 
Tout d'abord, voici mon script initial (sans la formule 3) :  
 

Code :
  1. {source 0}
  2. <!DOCTYPE html>
  3. <html lang="fr">
  4. <head>
  5.   <meta charset="utf-8">
  6.   <title>Blog de correction textes</title>
  7.   <style>
  8.   body {
  9.   background-size: 5px 900px, 6px 6px;
  10.   font-family: Verdana, Geneva, sans-serif;
  11.   font-size: 13px;
  12.   color: #000309;
  13.   text-align: left;
  14.   line-height: 24px;
  15. }
  16. #page {
  17.   width: 650px;
  18.   margin: auto;
  19.   padding: 20px;
  20.   background: #d8d8d8; /* Old browsers */
  21.   background: -webkit-gradient(linear, left top, left bottom, color-stop(1%,#d8d8d8), color-stop(100%,#ffffff)); /* Chrome,Safari4+ */
  22.   filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#d8d8d8', endColorstr='#ffffff',GradientType=0 ); /* IE6-9 */
  23.   background:    -moz-linear-gradient(top,       #d8d8d8 1%, #ffffff 100%); /* FF3.6+ */
  24.   background: -webkit-linear-gradient(top,       #d8d8d8 1%, #ffffff 100%); /* Chrome10+,Safari5.1+ */
  25.   background:      -o-linear-gradient(top,       #d8d8d8 1%, #ffffff 100%); /* Opera 11.10+ */
  26.   background:     -ms-linear-gradient(top,       #d8d8d8 1%, #ffffff 100%); /* IE10+ */
  27.   background:         linear-gradient(to bottom, #d8d8d8 1%, #ffffff 100%); /* W3C */
  28. }
  29. #prix { font-weight:bold; font-size:200%; color:blue; }
  30. h1 {
  31.   font-size: 0em;
  32.   line-height: 1em;
  33.   margin: 0;
  34.   text-transform: uppercase;
  35. }
  36. fieldset {
  37.   border: none;
  38.   margin: 0 0 1ex;
  39.   padding: 0;
  40. }
  41. .explications {
  42.   border-left: solid thin #0042b0;
  43.   padding-left: 1ex;
  44. }
  45. .explications ul {
  46.   list-style: none;
  47.   font-size: 10px;
  48.   font-style: italic;
  49.   padding: 0;
  50. }
  51. .explications li {
  52.   margin: 1ex 0;
  53. }
  54. .explications h2 {
  55.   font-style: italic;
  56.   font-size: 1em;
  57.   margin: 0 0 1em;
  58. }
  59. explications h3 {
  60.   font-style: italic;
  61.   font-size: 1em;
  62.   margin: 0 0 1em;
  63. }
  64. .etape {
  65.   font-weight: bold;
  66.   text-transform: uppercase;
  67. }
  68. .etape::after {
  69.   content: "\00A0: ";
  70. }
  71.   </style>
  72. </head>
  73. <body>
  74. <!DOCTYPE html>
  75. <html lang="fr">
  76. <head>
  77.   <meta charset="utf-8">
  78.   <title>Devis pour correction &ndash; Liliana78</title>
  79. </head>
  80. <body>
  81. <section id="page">
  82.   <h1>Coût de votre correction</h1>
  83.   <form id="testform">
  84.     <fieldset>
  85.       <p>
  86.         <label for="nbchar" class="etape">Nombre de signes</label>
  87.         <input id="nbchar" type="text" name="nbchar" value="0" />
  88.       </p>
  89.       <div class="explications">
  90.         <h2>Où trouver le nombre de signes ? (Caractères + espaces) </h2>
  91.         <ul>
  92.           <li>Word 2007/2010 : Cliquez sur l'onglet <strong>Révisions</strong>,
  93.             puis <strong>Vérification</strong> et enfin <strong>Statistiques</strong>.
  94.             Repérez la ligne <strong>caractères espaces compris.</strong>
  95.           </li>
  96.           <li>Word 2003/OpenOffice : Cliquez sur <strong>Outils</strong>,
  97.             puis <strong>Statistiques.</strong> Repérez la ligne
  98.             <strong>caractères espaces compris.</strong>
  99.           </li>
  100.         </ul>
  101.       </div>
  102.     </fieldset>
  103.     <fieldset>
  104.       <p>
  105.         <strong class="etape">Formule</strong>
  106.         <input  id="forumle1" type="radio" name="formule" value="1" checked="checked" />
  107.         <label for="forumle1">Simple</label>
  108.         <input  id="formule2" type="radio" name="formule" value="2" />
  109.         <label for="formule2" />Approfondie</label>
  110.    
  111.        
  112.       </p>
  113.       <p class="details">
  114.         Voir <a href="formules/correction-reformulation">tableau comparatif</a>
  115.       </p>
  116.       <p>
  117.         <label class="etape" for="formjur">Statut</label>
  118.         <select id="formjur" name="formjur">
  119.           <option value="0">Étudiant</option>
  120.           <option value="1">Particulier</option>
  121.           <option value="2">Professionnel</option>
  122.         </select>
  123.         <input type="submit" value="Calculer" />
  124.       </p>
  125.     </fieldset>
  126.   </form>
  127.   <div id="resultat"></div>
  128. </section>
  129. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
  130. <script type="text/javascript">// <![CDATA[
  131. function formatNumber (num) {
  132.     return num.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1 " )
  133. }
  134. $(function(){
  135.        $("input:submit" ).click(
  136.             function(){
  137.                 var calcul = 0;
  138.    var coefReduction = 10/100;
  139.                 if($("input:checked" ).val() == 1){
  140.                     if($("#formjur" ).val()== 1){
  141.                         calcul = $("#nbchar" ).val() * 0.0035;
  142.                     }else if ($("#formjur" ).val()== 2) {
  143.                         calcul = $("#nbchar" ).val() * 0.004;
  144.                     }else{
  145.                         calcul = $("#nbchar" ).val() * 0.003;
  146.                     }
  147.                 }else{
  148.                     if($("#formjur" ).val()== 1){
  149.                         calcul = $("#nbchar" ).val() * 0.0058;
  150.                     }else if ($("#formjur" ).val()== 2) {
  151.                         calcul = $("#nbchar" ).val() * 0.0066;
  152.                     }else{
  153.                         calcul = $("#nbchar" ).val() * 0.005;
  154.                     }
  155.              
  156.                  
  157.                 }
  158.                 var resultat = Math.ceil(calcul);
  159.                 $("#resultat" ).html("Tarif généralement appliqué : <span id=\"prix\">"+resultat+" &euro;</span>" );
  160.                 return false;
  161.             }
  162.        
  163.         );
  164.     });
  165. // ]]></script>


 
 
 
Et voici les modifications que j'ai apportées, sans succès, pour ajouter la formule 3 :
 

Code :
  1. <strong class="etape">Formule</strong>
  2.         <input  id="forumle1" type="radio" name="formule" value="1" checked="checked" />
  3.         <label for="forumle1">Simple</label>
  4.         <input  id="formule2" type="radio" name="formule" value="2" />
  5.         <label for="formule2" />Approfondie</label>
  6.         <input  id="formule3" type="radio" name="formule" value="3" />
  7.         <label for="formule3" />Complète</label>


         
 

Code :
  1. if($("input:checked" ).val() == 1){
  2.                     if($("#formjur" ).val()== 1){
  3.                         calcul = $("#nbchar" ).val() * 0.0035;
  4.                     }else if ($("#formjur" ).val()== 2) {
  5.                         calcul = $("#nbchar" ).val() * 0.004;
  6.                     }else{
  7.                         calcul = $("#nbchar" ).val() * 0.003;
  8.                     }
  9.                 }else{
  10.                     if($("#formjur" ).val()== 1){
  11.                         calcul = $("#nbchar" ).val() * 0.0058;
  12.                     }else if ($("#formjur" ).val()== 2) {
  13.                         calcul = $("#nbchar" ).val() * 0.0066;
  14.                     }else{
  15.                         calcul = $("#nbchar" ).val() * 0.005;
  16.                     }
  17.                  }else{
  18.                     if($("#formjur" ).val()== 1){
  19.                         calcul = $("#nbchar" ).val() * 0.007;
  20.                     }else if ($("#formjur" ).val()== 2) {
  21.                         calcul = $("#nbchar" ).val() * 0.008;
  22.                     }else{
  23.                         calcul = $("#nbchar" ).val() * 0.006;
  24.                     }
  25.              
  26.                  
  27.                 }


 
Ai-je oublié quelque chose ?
 
Merci de votre aide.

Reply

Marsh Posté le 05-09-2015 à 13:14:10   

Reply

Marsh Posté le 10-09-2015 à 17:34:55    

Code :
  1. <strong class="etape">Formule</strong>
  2. <input  id="forumle1" type="radio" name="formule" value="1" checked="checked" />
  3. <label for="forumle1">Simple</label>
  4. <input  id="formule2" type="radio" name="formule" value="2" />
  5. <label for="formule2" />Approfondie</label>
  6. <input  id="formule3" type="radio" name="formule" value="3" />
  7. <label for="formule3" />Complète</label>


       

 
Code :
  1. $(function(){
  2.       $("input:submit" ).click(
  3.         function(){
  4.           var calcul = 0;
  5.           var coefReduction = 10/100;
  6.           if($("input[name=formule]:checked" ).val() == 1) {
  7.             if ($("#formjur" ).val()== 1) {
  8.               calcul = $("#nbchar" ).val() * 0.0035;
  9.             } else if ($("#formjur" ).val() == 2) {
  10.               calcul = $("#nbchar" ).val() * 0.004;
  11.             } else {
  12.               calcul = $("#nbchar" ).val() * 0.003;
  13.             }
  14.           } else if ($("input[name=formule]:checked" ).val() == 2) {
  15.             if($("#formjur" ).val()== 1) {
  16.               calcul = $("#nbchar" ).val() * 0.0058;
  17.             } else if ($("#formjur" ).val() == 2) {
  18.               calcul = $("#nbchar" ).val() * 0.0066;
  19.             } else {
  20.               calcul = $("#nbchar" ).val() * 0.005;
  21.             }
  22.           } else {
  23.               if ($("#formjur" ).val()== 1) {
  24.                 calcul = $("#nbchar" ).val() * 0.007;
  25.               } else if ($("#formjur" ).val() == 2) {
  26.                 calcul = $("#nbchar" ).val() * 0.008;
  27.               } else {
  28.                 calcul = $("#nbchar" ).val() * 0.006;
  29.               }
  30.           }
  31.           var resultat = Math.ceil(calcul);
  32.           $("#resultat" ).html("Tarif généralement appliqué : <span id=\"prix\">"+resultat+" €</span>" );
  33.           return false;
  34.         }
  35.       );
  36.     });
 

Quand on a 2 conditions : if > else
Si on en ajoute une 3e ou + : if > else if.... (n conditions) > else

 

J'ai modifié la condition pour qu'elle soit plus parlante en ajoutant le nom du formulaire des radios

 

++

 

EDIT:

 

Au lieu de garder ce code degueux autant utiliser des tableaux:

 
Code :
  1. $(function(){
  2.   var tarifs = [[0.003,0.005,0.006],   // Etudiant
  3.                 [0.0035,0.0058,0.007], // Particulier
  4.                 [0.004,0.0066,0.008]]; // Professionnel
  5.   $("#testform" ).submit(function() {
  6.       var coefReduction = 0.9,
  7.           nbrCaractere  = $("#nbchar" ).val(),
  8.           formule       = $("input[name=formule]:checked" ).val() - 1,
  9.           client        = $("#formjur" ).val(),
  10.           resultat      = Math.ceil(tarifs[client][formule] * nbrCaractere);
  11.       $("#resultat" ).html("Tarif généralement appliqué : <span id=\"prix\">" + resultat + " €</span>" );
  12.       return false;
  13.   });
  14. });


Message édité par FBZ le 10-09-2015 à 19:14:43

---------------
[Feed-back]
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed