Résolu Récuperer la valeur d'une liste déroulante pour panier d'achat

Solutions (20)
Tags :
  • Mise à jour
  • Programmation
|
Bonjour,

Je suis en phase de test d'une billetterie en ligne pour un CE. Pour ce faire, j'utilise un plugin basé sur quickCart 3.3 sur un cms GUPPY.
Lien.

Je rencontre un problème au niveau d'une balise Select insérée dans ma page orders_basket.tpl afin de limiter le nombre d'articles à ajouter dans le panier d'achat.
J'ai cherché des heures mais en vain...

J'ai donc intégré une liste déroulante a choix unique en lieu et place de la zone de saisie numérique. la liste apparait sans problème dans le panier d'achat mais lorsque je la modifie et que je clic sur le bouton "recalculer" le montant total se calcul effectivement mais le nombre d'articles dans le panier se remet par défaut à 1, ce qui s'impacte dans la confirmation de commande dans la page suivante et dans le mail envoyé au client et au vendeur.
Comment puis-je conserver la valeur de la liste déroulante sélectionner lors de l'envoi du formulaire ou du clic sur le bouton de mise à jour ?
Dois-je faire une modif dans le "checkform" également ?

Merci d'avance.

  1. <!-- BEGIN BASKET_LIST -->
  2. <tr class="l$aData[sStyle]">
  3. <th>
  4. <a href="$aData[sLinkName]">$aData[sName]</a>
  5. </th>
  6. <td class="price">
  7. $aData[sPrice]
  8. </td>
  9. <td class="quantity">
  10. <label for="quantity$aData[iProduct]">$lang[Quantity]</label><select name="aProducts[$aData[iProduct]]" value="$aData[iQuantity]]" maxlength="1" id="quantity$aData[iProduct]" alt="int" />
  11. <option value="1">1</option>
  12. <option value="2">2</option>
  13. <option value="3">3</option>
  14. <option value="4">4</option>
  15. <option value="5">5</option>
  16. </select>
  17. </td>
  18. <td class="summary">
  19. $aData[sSummary]
  20. </td>
  21. <td class="del">
  22. <a href="$aData[sLinkDelete]">$lang[Basket_delete]</a>
  23. </td>
  24. </tr>
  25. <!-- END BASKET_LIST -->
  26. <!-- BEGIN BASKET_HEAD -->
  27. <script type="text/javascript" src="$config[dir_core]checkForm.js"></script>
  28. <div id="basket">
  29. <div class="info">$lang[Basket_info]</div>
  30. <form method="post" action="" onsubmit="return checkForm( this )">
  31. <fieldset id="orderedProducts">
  32. <table cellspacing="0">
  33. <thead>
  34. <tr>
  35. <td class="name">
  36. $lang[Name]
  37. </td>
  38. <td class="price">
  39. <em>$lang[Price]</em><span>[$config[currency_symbol]]</span>
  40. </td>
  41. <td class="quantity">
  42. $lang[Quantity]
  43. </td>
  44. <td class="summary">
  45. <em>$lang[Summary]</em><span>[$config[currency_symbol]]</span>
  46. </td>
  47. <td class="options"> </td>
  48. </tr>
  49. </thead>
  50. <tfoot>
  51. <tr id="recount">
  52. <td colspan="2"> </td>
  53. <td>
  54. <input type="submit" value="$lang[Basket_update]" class="submit" />
  55. </td>
  56. <td colspan="2"> </td>
  57. </tr>
  58. <tr class="summaryProducts">
  59. <th colspan="3">
  60. $lang[Summary]
  61. </th>
  62. <td id="summary">
  63. $aData[sProductsSummary]
  64. </td>
  65. <td> </td>
  66. </tr>
  67. <tr class="buttons">
  68. <td id="save">
  69. <input type="submit" name="sSave" value="$lang[Save_basket]" class="submit" />
  70. </td>
  71. <td colspan="4" class="nextStep">
  72. <input type="submit" name="sNext" value="$lang[Basket_next]  >>" class="submit" />
  73. </td>
  74. </tr>
  75. </tfoot>
  76. <tbody>
  77. <!-- END BASKET_HEAD -->
  78. <!-- BEGIN BASKET_FOOT -->
  79. </tbody>
  80. </table>
  81. </fieldset>
  82. </form>
  83. </div>
  84. <!-- END BASKET_FOOT -->
  85. <!-- BEGIN BASKET_EMPTY -->
  86. <div class="message" id="error">
  87. <h3>$lang['Basket_empty']</h3>
  88. </div>
  89. <!-- END BASKET_EMPTY -->
Contenus similaires
Meilleure solution
partage
|
Super.
Et merci d'avoir donné l'explication finale.
  • Commenter cette solution |
Score
0
òh
òi
|
Meilleure réponse sélectionnée par bettywau.
  • Commenter cette réponse |
Score
0
òh
òi
|
Problème résolu !

En fait le code à insérer était le suivant :

  1. <td class="quantity">
  2. <label for="quantity$aData[iProduct]">$lang[Quantity]</label><select name="aProducts[$aData[iProduct]]" " id="quantity$aData[iProduct]" alt="int" />
  3. <option value="1" $aData[sSelected1] >1</option>
  4. <option value="2" $aData[sSelected2] >2</option>
  5. <option value="3" $aData[sSelected3] >3</option>
  6. <option value="4" $aData[sSelected4] >4</option>
  7. <option value="5" $aData[sSelected5] >5</option>
  8. ...
  9. </select>


ET LE FICHIER core/orders.php à modifier ainsi :
à la ligne :
<?foreach( $this->aProducts as $aData ){ ?>

remplacer par :
  1. <?php foreach( $this->aProducts as $aData ){ $aData['sSelected'.$aData['iQuantity']] = 'selected="selected" ';?>


Maintenant ça fonctionne nickel !!
crazycat@id, merci pour ton aide !

  • Commenter cette réponse |
Score
0
òh
òi
|
Merci. En fait, il ne s'agit d'un script guppy mais basé sur quick.cart.. j'ai donc soumis ma question sur leur forum....
  • Commenter cette réponse |
Score
0
òh
òi
|
Ca, je l'ai très bien compris.
Je te dis juste qu'il doit y avoir des astuces propres à Guppy pour faire un select et que pour ma part je ne les connais pas.
Tu sais désormais quel est le problème, je te conseille de l'exposer sur http://www.freeguppy.org/forum.php?lng=fr où des personnes sont surement bien plus compétentes.
  • Commenter cette réponse |
Score
0
òh
òi
|
Hé bien, à la base, il n'y avait pas de select mais une zone de texte :
Sur le fichier d'origine :

  1. <td class="quantity">
  2. <label for="quantity$aData[iProduct]">$lang[Quantity]</label><input type="text" name="aProducts[$aData[iProduct]]" value="$aData[iQuantity]" size="3" maxlength="4" class="input" id="quantity$aData[iProduct]" alt="int" />onclick="this.form.aProducts[$aData[iProduct]].value=this.selectedIndex;">
  3. </td>

...
  • Commenter cette réponse |
Score
0
òh
òi
|
En fait, je me posais la question: est-ce qu'il n'y a pas déjà une fonction qui existe pour créer ton select, et qui tiendrais compte du choix utilisateur ?
  • Commenter cette réponse |
Score
0
òh
òi
|
Bon, j'avance !!
j'aurais dû le préciser .. Il s'agit d'un fichier .tpl

Pour le coup, pour insérer du code php, il faut insérer ces balises :
{php} ...ton php... {/php}

et non <?php ?

J'ai mis 5 articles dans mon panier, il a bien enregistré et conservé la valeur..
Mis il la garde tellement bien que du coup, il remet 5 par défaut même si j'en change la quantité..

voici mon code modifié :
  1. <label for="quantity$aData[iProduct]">$lang[Quantity]</label><select name="aProducts[$aData[iProduct]]" " id="quantity$aData[iProduct]" alt="int" />
  2. <option value="1" {php}($aData[iQuantity] == 1)?"selected=selected":""; {/php} >1</option>
  3. <option value="2" {php}($aData[iQuantity] == 2)?"selected=selected":""; {/php} >2</option>
  4. <option value="3" {php}($aData[iQuantity] == 3)?"selected=selected":""; {/php} >3</option>
  5. <option value="4" {php}($aData[iQuantity] == 4)?"selected=selected":""; {/php} >4</option>
  6. <option value="5" {php}($aData[iQuantity] == 5)?"selected=selected":""; {/php} >5</option>
  7. </select>

  • Commenter cette réponse |
Score
0
òh
òi
|
Ok, ben merci d'avoir tenté de résoudre mon problème..
Je vais creuser dans cette voie..
  • Commenter cette réponse |
Score
0
òh
òi
|
Je ne pense pas, ton code est bon.
Le seul souci est que le php n'est pas interprété, voila ce que je vois dans la source de ta page:
  1. <label for="quantity56">Quantité</label><select name="aProducts[56]" " maxlength="1" id="quantity56" alt="int" />
  2. <option value="1" <?php (3 == 1)?"selected=selected":""; ?>1</option>
  3. <option value="2" <?php (3 == 2)?"selected=selected":""; ?>2</option>
  4. <option value="3" <?php (3 == 3)?"selected=selected":""; ?>3</option>
  5.  
  6. <option value="4" <?php (3 == 4)?"selected=selected":""; ?>4</option>
  7. <option value="5" <?php (3 == 5)?"selected=selected":""; ?>5</option>
  8. </select>

Il faut donc voir du côté de Guppy s'il y a un moyen de faire interpréter ça, ou si ça ne doit pas s'écrire autrement.

P.S.: j'avais bien sélectionné une quantité de 3
  • Commenter cette réponse |
Score
0
òh
òi
|
Ne devrait-ce pas plutot être :

<option value="1" <?php (aProducts[$aData[iProduct]] == 1)?"selected=selected":""; ?>1</option>

plutot que :

<option value="1" <?php ($aData[iQuantity] == 1)?"selected=selected":""; ?>1</option>

sachant que l'on a
name="aProducts[$aData[iProduct]]"

??
  • Commenter cette réponse |
Score
0
òh
òi
|
Ton souci est vraiment au niveau du template où est généré le select. Je te conseille de demander sur les forums de guppy, il y aura bien quelqu'un qui pourra t'aider.
Ou même directement auprès du créateur du plugin.
  • Commenter cette réponse |
Score
0
òh
òi
|
oK ok...
J'ai trouvé un bout de code dans le fichier order;php faisant réference au nom de ma variable (Iquantity)
Peut-être une piste.... :heink:  Mais ça, s'est quand on se trouve sur une page produits me semble-t-il, pas sur la page du panier d'achat..

  1. function addToBasket( $iProduct, $iQuantity, $iOrder = null ){
  2. if( !isset( $iOrder ) ){
  3. $iOrder = $_SESSION['iCustomer'.LANGUAGE];
  4. $sDb = DB_ORDERS_TEMP;
  5. }
  6.  
  7. $iQuantity = (int) $iQuantity;
  8. $aFile = file( $sDb );
  9. $iCount = count( $aFile );
  10. $rFile = fopen( $sDb, 'w' );
  11. $iTime = time( );
  12. flock( $rFile, LOCK_EX );
  13. for( $i = 0; $i < $iCount; $i++ ){
  14. if( $i > 0 ){
  15. $aFile[$i] = rtrim( $aFile[$i] );
  16. $aExp = explode( '$', $aFile[$i] );
  17. if( $aExp[0] == $iOrder ){
  18. if( $aExp[1] == $iProduct ){
  19. if( ( $aExp[2] + $iQuantity ) < 10000 )
  20. $aExp[2] += (int) $iQuantity;
  21. $aFile[$i] = trim( implode( '$', $aExp ) )."\n";
  22. $bFound = true;
  23. }
  24. else{
  25. $aFile[$i] .= "\n";
  26. }
  27. }
  28. else{
  29. if( $iTime - substr( $aExp[0], 0, 10 ) >= 259200 ) // delete empty orders older then 72 hours
  30. $aFile[$i] = null;
  31. else
  32. $aFile[$i] .= "\n";
  33. }
  34. }
  35. else{
  36. $aFile[$i] = '<?php exit; ?>'."\n";
  37. }
  38.  
  39. fwrite( $rFile, $aFile[$i] );
  40. } // end for
  • Commenter cette réponse |
Score
0
òh
òi
|
Quand tu cliques sur le bouton de mise à jour, tu soumets ta page, donc elle se recharge.
  • Commenter cette réponse |
Score
0
òh
òi
|
Merci de m'apporter ton aide si gentillement.
Hélas, ça ne fonctionne toujours pas.. Le calcul est bon pour le total du panier, mais je ne comprend toujours pas pourquoi en cliquant sur le bouton "mise a jour" le panier se réinitialise.. :( 
D'autant que je ne voit rien dans ce code pouvant indiquer l'execution de ce bouton tel un "onclick".. :heink: 
  • Commenter cette réponse |
Score
0
òh
òi
|
En fait il manque la partie qui sélectionne ta valeur dans la génération des options.

Ne connaissant pas le principe des templates de Guppy, je ne vais pas pouvoir t'aider complètement, mais en gros il faudrait un code du genre:
  1. <label for="quantity$aData[iProduct]">$lang[Quantity]</label>
  2. <select name="aProducts[$aData[iProduct]]" " maxlength="1" id="quantity$aData[iProduct]" alt="int" />
  3. <option value="1" <?php ($aData[iQuantity] == 1)?"selected=selected":""; ?>>1</option>
  4. <option value="2" <?php ($aData[iQuantity] == 2)?"selected=selected":""; ?>>2</option>
  5. <option value="3" <?php ($aData[iQuantity] == 3)?"selected=selected":""; ?>>3</option>
  6. <option value="4" <?php ($aData[iQuantity] == 4)?"selected=selected":""; ?>>4</option>
  7. <option value="5" <?php ($aData[iQuantity] == 5)?"selected=selected":""; ?>>5</option>
  8. </select>
  • Commenter cette réponse |
Score
0
òh
òi
|
c'était bien vu...
J'ai modifié le fichier.. mais ça ne change rien... Je désespère :cry: 

  1. <!-- BEGIN BASKET_LIST -->
  2. <tr class="l$aData[sStyle]">
  3. <th>
  4. <a href="$aData[sLinkName]">$aData[sName]</a>
  5. </th>
  6. <td class="price">
  7. $aData[sPrice]
  8. </td>
  9. <td class="quantity">
  10. <label for="quantity$aData[iProduct]">$lang[Quantity]</label><select name="aProducts[$aData[iProduct]]" " maxlength="1" id="quantity$aData[iProduct]" alt="int" />
  11. <option value="1">1</option>
  12. <option value="2">2</option>
  13. <option value="3">3</option>
  14. <option value="4">4</option>
  15. <option value="5">5</option>
  16. </select>


Je ne trouve pas dans ce fichier l'exécution du bouton "mise à jour" qui recalcul le montant total... puisque c'est cette action qui remet les produits à 1 dans le panier, il serait intéressant de voir le bout de code ..
Tout ce que je vois c'est :
<tr id="recount">
<td colspan="2"> </td>
<td>


dans le BEGIN BASKET _HEAD :

  1. <!-- BEGIN BASKET_HEAD -->
  2. <script type="text/javascript" src="$config[dir_core]checkForm.js"></script>
  3. <div id="basket">
  4. <div class="info">$lang[Basket_info]</div>
  5. <form method="post" action="" onsubmit="return checkForm( this )">
  6. <fieldset id="orderedProducts">
  7. <table cellspacing="0">
  8. <thead>
  9. <tr>
  10. <td class="name">
  11. $lang[Name]
  12. </td>
  13. <td class="price">
  14. <em>$lang[Price]</em><span>[$config[currency_symbol]]</span>
  15. </td>
  16. <td class="quantity">
  17. $lang[Quantity]
  18. </td>
  19. <td class="summary">
  20. <em>$lang[Summary]</em><span>[$config[currency_symbol]]</span>
  21. </td>
  22. <td class="options"> </td>
  23. </tr>
  24. </thead>
  25. <tfoot>
  26. [b] <tr id="recount">
  27. <td colspan="2"> </td>
  28. <td>[/b]
  29. <input type="submit" value="$lang[Basket_update]" class="submit" />
  30. </td>
  31. <td colspan="2"> </td>
  32. </tr>
  33. <tr class="summaryProducts">
  34. <th colspan="3">
  35. $lang[Summary]
  36. </th>
  37. <td id="summary">
  38. $aData[sProductsSummary]
  39. </td>
  40. <td> </td>
  41. </tr>
  42. <tr class="buttons">
  43. <td id="save">
  44. <input type="submit" name="sSave" value="$lang[Save_basket]" class="submit" />
  45. </td>
  46. <td colspan="4" class="nextStep">
  47. <input type="submit" name="sNext" value="$lang[Basket_next]  >>" class="submit" />
  48. </td>
  49. </tr>
  50. </tfoot>
  51. <tbody>
  52. <!-- END BASKET_HEAD -->
  53. <!-- BEGIN BASKET_FOOT -->
  54. </tbody>
  55. </table>
  56. </fieldset>
  57. </form>
  58. </div>
  59. <!-- END BASKET_FOOT -->
  60. <!-- BEGIN BASKET_EMPTY -->
  61. <div class="message" id="error">
  62. <h3>$lang['Basket_empty']</h3>
  63. </div>
  64. <!-- END BASKET_EMPTY -->
  • Commenter cette réponse |
Score
0
òh
òi
|
Ok, je viens de jeter un oeil au script et à la boutique: pas la peine de modifier le script, il gère déjà tout seul les select.
Le souci me semble plutôt sur le select lui-même. Retire value="$aData[iQuantity]]" de la balise.

Note aussi qu'il y a un ] en trop dans cet attribut.
  • Commenter cette réponse |
Score
0
òh
òi
|
Merci pour cette réponse et ton aide !
J'ai regardé le Checkform .. Mais je ne sais pas où inséré ce bout de code, sachant qu'il s'agit de la quantité (quantity)
La valeur doit pourtant bien être reprise car lorsque je clique sur le bouton "recalculer" le montant total est exacte en fonction du nombre d'articles sélectionnés dans la liste déroulante..
C'est dans le panier d'achat et le mail de commande que le nombre d'articles est par défaut remis à zéro..
Lien vers la billetterie :

Voici le checkform :
  1. /**
  2. * checkForm
  3. * @version 0.1.4
  4. */
  5.  
  6. // default input border color
  7. if( !cfBorderColor )
  8. var cfBorderColor = '#000000';
  9. if( !cfWarningColor )
  10. var cfWarningColor = '#ff0000';
  11.  
  12. var sAllWarnings = '';
  13. var oFirstWrong;
  14. var bIsWarnings = false;
  15. var bAllGood = true;
  16.  
  17. // regular expresions
  18. var reS = /\s/gi;
  19. var reEmail = /^[a-z0-9_.-]+([_\\.-][a-z0-9]+)*@([a-z0-9_\.-]+([\.][a-z]{2,4}))+$/i;
  20. var reUrl = /^[a-z\d.\\\/\:]{1,}\.[a-z]{2,4}(\/.*)*$/i;
  21. var reFloat = /^-?[0-9]{1,}[.]{1}[0-9]{1,}$/i;
  22. var reInt = /^-?[0-9]{1,}$/i;
  23. var reDot = /\,/gi;
  24.  
  25.  
  26. function fieldOperations( oObj, bCheck, sInfo ){
  27.  
  28. if( bCheck === true ) {
  29. if( oObj.type != 'hidden' && oObj.type != 'radio' )
  30. oObj.style.borderColor = cfBorderColor;
  31. }
  32. else {
  33. if( sInfo )
  34. sAllWarnings += sInfo +'\n';
  35. if( oObj.type != 'hidden' && oObj.type != 'radio' ){
  36. oObj.style.borderColor = cfWarningColor;
  37. if( bIsWarnings == false )
  38. oFirstWrong = oObj;
  39. }
  40. bIsWarnings = true;
  41. return false;
  42. }
  43.  
  44. return true;
  45. } // end function fieldOperations
  46.  
  47.  
  48. function checkText( oObj, sInfo ) {
  49.  
  50. checkT = oObj.value.replace( reS, "" );
  51.  
  52. var bCheck = true;
  53. if( checkT == '' )
  54. bCheck = false;
  55.  
  56. return fieldOperations( oObj, bCheck, sInfo );
  57. } // end function checkText
  58.  
  59.  
  60. function checkEmail( oObj ) {
  61.  
  62. var sEmail = oObj.value.replace( reS, "" );
  63.  
  64. var bCheck = true;
  65. if ( sEmail.search( reEmail ) == -1 )
  66. bCheck = false;
  67.  
  68. return fieldOperations( oObj, bCheck, cfLangMail );
  69. } // end function checkEmail
  70.  
  71.  
  72. function checkWww( oObj ) {
  73.  
  74. var sWww = oObj.value.replace( reS, "" );
  75.  
  76. var bCheck = true;
  77. if( s<a href="Www.search" rel="nofollow" target="_blank">Www.search</a>( reUrl ) == -1 || sWww == 'http://' )
  78. bCheck = false;
  79.  
  80. return fieldOperations( oObj, bCheck, cfLangUrl );
  81. } // end function checkWww
  82.  
  83.  
  84. function checkFloat( oObj, sInfo ) {
  85.  
  86. var bCheck = true;
  87. if( oObj.value.search( reFloat ) == -1 && oObj.value.search( reInt ) == -1 ){
  88. if( !sInfo )
  89. var sInfo = cfWrongValue;
  90. bCheck = false;
  91. }
  92.  
  93. return fieldOperations( oObj, bCheck, sInfo );
  94. } // end function checkFloat
  95.  
  96.  
  97. function checkInt( oObj, sInfo ) {
  98.  
  99. var bCheck = true;
  100. if( oObj.value.search( reInt ) == -1 ) {
  101. if( !sInfo )
  102. var sInfo = cfWrongValue;
  103. bCheck = false;
  104. }
  105.  
  106. return fieldOperations( oObj, bCheck, sInfo );
  107. } // end function checkInt
  108.  
  109.  
  110. function checkFloatValue( oObj, iMinFloat, sInfo ) {
  111.  
  112. var bCheck = true;
  113. if( +oObj.value <= +iMinFloat ) {
  114. if( !sInfo )
  115. var sInfo = cfToSmallValue;
  116. bCheck = false;
  117. }
  118.  
  119. return fieldOperations( oObj, bCheck, sInfo );
  120. } // end function checkFloatValue
  121.  
  122. function checkIntValue( oObj, minInt, sign, sInfo ) {
  123. if( !minInt )
  124. var minInt = 0;
  125. if( !sign )
  126. var sign = '==';
  127. if( !sInfo )
  128. var sInfo = cfWrongValue;
  129.  
  130. eval ( 'var bCheck = ( '+ +oObj.value +' '+ sign +' '+ +minInt +' );' );
  131.  
  132. return fieldOperations( oObj, bCheck, sInfo );
  133. } // end function checkIntValue
  134.  
  135.  
  136. function checkTxt( oObj, iMin, sInfo ) {
  137. if( !iMin )
  138. var iMin = 6;
  139.  
  140. var check = oObj.value.replace( reS, "" );
  141.  
  142. var bCheck = true;
  143. if( check.length < iMin ){
  144. bCheck = false;
  145. if( !sInfo )
  146. var sInfo = cfTxtToShort;
  147. }
  148. return fieldOperations( oObj, bCheck, sInfo );
  149. } // end function checkTxt
  150.  
  151. function checkRadio( oObj, sInfo ) {
  152.  
  153. var bCheck = false;
  154. if( oObj.length ){
  155. for( var i = 0; i < oObj.length; i++ ){
  156. if( oObj[i].type == 'radio' ){
  157. if( oObj[i].checked )
  158. bCheck = true;
  159. }
  160. } // end for
  161. return fieldOperations( oObj[0], bCheck, sInfo );
  162. }
  163. else{
  164. if( oObj.checked )
  165. bCheck = true;
  166. return fieldOperations( oObj, bCheck, sInfo );
  167. }
  168. } // end function checkRadio
  169.  
  170. function checkExt( oObj, sExtensions, sInfo ){
  171.  
  172. var aFileExt = oObj.value.split( "." );
  173. var sFileExt = aFileExt[aFileExt.length - 1];
  174.  
  175. var aGoodExt = sExtensions.split( "|" );
  176. var iGoodCount = aGoodExt.length;
  177.  
  178. var bCheckExt = false;
  179. for( var i = 0; i < iGoodCount; i++ ){
  180. if( sFileExt == aGoodExt[i] ){
  181. bCheckExt = true;
  182. break;
  183. }
  184. } // end for
  185.  
  186. if( !sInfo )
  187. var sInfo = cfWrongExt;
  188.  
  189. return fieldOperations( oObj, bCheckExt, sInfo );
  190. } // end function checkExt
  191.  
  192.  
  193. function checkOneCheckbox( oObj, sInfo ) {
  194. return fieldOperations( oObj, oObj.checked, sInfo );
  195. } // end function checkOneCheckbox
  196.  
  197. function cfDot( oObj ){
  198. return oObj.value.replace(reDot, "\.");
  199. } // end function cfDot
  200.  
  201. function cfFix( f ){
  202. f = f.toString( );
  203. var re = /\,/gi;
  204. f = f.replace( re, "\." );
  205.  
  206. f = Math.round( f * 100 );
  207. f = f.toString( );
  208. var sMinus = f.slice( 0, 1 );
  209. if( sMinus == '-' ){
  210. f = f.slice( 1, f.length )
  211. }
  212. else
  213. sMinus = '';
  214. if( f.length < 3 ) {
  215. while( f.length < 3 )
  216. f = '0' + f;
  217. }
  218.  
  219. var w = sMinus + f.slice( 0, f.length-2 ) + "." + f.slice( f.length-2, f.length );
  220.  
  221. if( w.search( reFloat ) == -1 )
  222. w = '0.00';
  223. return w;
  224. } // end function cfFix
  225.  
  226. var sAllWarnings = '';
  227. var bIsWarnings = false;
  228. var bAllGood = true;
  229. var oFirstWrong = '';
  230.  
  231. function checkForm( form ) {
  232.  
  233. sAllWarnings = '';
  234. bIsWarnings = false;
  235. bAllGood = true;
  236. oFirstWrong = '';
  237.  
  238. aInputs = form.getElementsByTagName( 'input' );
  239. checkFormElements( aInputs, null, form )
  240.  
  241. aInputs = form.getElementsByTagName( 'textarea' );
  242. checkFormElements( aInputs, true )
  243.  
  244. aInputs = form.getElementsByTagName( 'select' );
  245. checkFormElements( aInputs, true )
  246.  
  247. if( bIsWarnings == true ) {
  248. sAllWarnings = cfLangNoWord + '\n' + sAllWarnings;
  249. alert ( sAllWarnings );
  250. if( oFirstWrong )
  251. oFirstWrong.focus();
  252. return false;
  253. }
  254. return true;
  255. } // end function checkForm
  256.  
  257. function checkFormElements( aInputs, bTitle, oForm ){
  258. var oO;
  259. var sT; // typ
  260. var aParams;
  261. var aRadio = Array( );
  262.  
  263. for( var i = 0; i < aInputs.length; i++ ){
  264. oO = aInputs[i];
  265. if( oO.alt || ( oO.title && bTitle && bTitle == true ) ){
  266. if( bTitle && bTitle == true )
  267. aParams = oO.title.split( ';' );
  268. else
  269. aParams = oO.alt.split( ';' );
  270. sT = aParams[0];
  271. if( sT == 'simple' ){
  272. bAllGood = checkText( oO, aParams[1] );
  273. }
  274. else if( ( sT == 'email' ) && ( ( aParams[1] == 'if' && oO.value ) || !aParams[1] ) ){
  275. bAllGood = checkEmail( oO );
  276. }
  277. else if( ( sT == 'www' ) && ( ( aParams[1] == 'if' && oO.value ) || !aParams[1] ) ){
  278. bAllGood = checkWww( oO );
  279. }
  280. else if( ( sT == 'float' ) && ( ( aParams[2] == 'if' && oO.value ) || !aParams[2] ) ){
  281. oO.value = cfDot( oO );
  282. bAllGood = checkFloat( oO );
  283. if( bAllGood ){
  284. oO.value = cfFix( oO.value );
  285. if( aParams[1] != '' )
  286. bAllGood = checkFloatValue( oO, aParams[1] );
  287. }
  288. }
  289. else if( ( sT == 'txt' ) && ( ( aParams[3] == 'if' && oO.value ) || !aParams[3] ) ){
  290. bAllGood = checkTxt( oO, aParams[1], aParams[2] );
  291. }
  292. else if( ( sT == 'extension' ) && ( ( aParams[3] == 'if' && ( oO.value ) ) || !aParams[3] ) ){
  293. bAllGood = checkExt( oO, aParams[1], aParams[2] );
  294. }
  295. else if( ( sT == 'int' ) && ( ( aParams[4] == 'if' && oO.value ) || !aParams[4] ) ){
  296. bAllGood = checkInt( oO, aParams[2] );
  297. if( aParams[1] && bAllGood ) {
  298. if( aParams[3] ) {
  299. bAllGood = checkIntValue( oO, aParams[1], aParams[3], aParams[2] );
  300. }
  301. else
  302. bAllGood = checkFloatValue( oO, aParams[1], aParams[2] );
  303. }
  304. }
  305. else if( ( sT == 'box' ) && ( ( aParams[2] == 'if' && ( oO.value ) ) || !aParams[2] ) ){
  306. bAllGood = checkOneCheckbox( oO, aParams[1] );
  307. }
  308. else if( sT == 'radio' ){
  309. var bRadioChecked = false;
  310. for( var iR = 0; iR < aRadio.length; iR++ ){
  311. if( aRadio[iR] == oO.name )
  312. bRadioChecked = true;
  313. }
  314. if( bRadioChecked == false ){
  315. bAllGood = checkRadio( oForm[oO.name], aParams[1] )
  316. aRadio[aRadio.length] = oO.name;
  317. }
  318. }
  319. }
  320. }
  321. } // end function checkFormElements
  • Commenter cette réponse |
Score
0
òh
òi
|
Je ne sais pas à quoi ressemble ta fonction chekform(), mais en js tu récupères la valeur d'un select par:
  1. document.getElementById('ton_select').options[document.getElementById('ton_select').selectedIndex].value
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS