empécher l'éxécution d'un onChange 1 fois, dans un form

empécher l'éxécution d'un onChange 1 fois, dans un form - HTML/CSS - Programmation

Marsh Posté le 07-10-2003 à 16:45:02    

en fait, quand la page se REcharge avec les anciens paramètres, le fait de re mettre les paramètres à 'selected' lance le onChange qui appelle une remise à zéro d'une dropdown list où l'on viend de spécifier l'élément 'selected'... ça pose soucis...
 
voià un bout du code, histoire d'être plus clair :

Code :
  1. <form name="filter" method="get" action="<%=URLRoot%>/GenAccountingMachShipmentServlet">
  2.             <tr>
  3.               <td height="31" valign="top" class="title1"> Status: &#160 &#160
  4.               </td>
  5.               <td></td>
  6.               <td valign="top">
  7.                 <select name="selectStatus" size="1" onChange="javascript:updateForm()">
  8.                   <option value="SHIPPED TO DS" <%=isSelected("SHIPPED TO DS", selectedStatus)%>>SHIPPED
  9.                   TO DS</option>
  10.                   <option value="ASSY LINE" <%=isSelected("ASSY LINE", selectedStatus)%>>ASSY
  11.                   LINE</option>
  12.                 </select>
  13.               </td>
  14.               <td></td>
  15.             </tr>
  16.             <tr>
  17.               <td height="33" valign="top" width="296" class="title1"> Dealer
  18.                 name: &#160 &#160 </td>
  19.               <td width="57"></td>
  20.               <td valign="top" width="163">
  21.                 <select name="selectTailorCd" size="1" class="selectCell2">
  22.                   <option value="ALL" <%=isSelected("ALL",selectedTailorCd)%> >ALL</option>
  23.                   <%
  24.    Enumeration enTail = vecTail.elements();
  25.    while (enTail.hasMoreElements()){
  26.       Tailor myTailor = (Tailor)enTail.nextElement();
  27.        %>
  28.                   <option value="<%=myTailor.getTailorCd()%>" <%=isSelected(myTailor.getTailorCd().substring(0,4), selectedTailorCd)%>><%=myTailor.getTailorNameAbbr()%></option>
  29.                   <%}%>
  30.                 </select>
  31.               </td>
  32.               <td width="154"></td>
  33.             </tr>


 
si c'est encore pas clair, demandez...


Message édité par brisssou le 07-10-2003 à 16:45:36

---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 07-10-2003 à 16:45:02   

Reply

Marsh Posté le 07-10-2003 à 16:54:37    

essaie voir de faire un onClick au lieu de Onchange.


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 07-10-2003 à 17:00:13    

ça ne fonctionne pas apparemment... :??:


Message édité par brisssou le 07-10-2003 à 17:09:10

---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 07-10-2003 à 17:14:14    

j'y avait cru pourtant...


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 07-10-2003 à 19:45:10    

Non non, onclick ça marchera pas.
 
Le plus simple, bidouille insinde, consiste à créer une variable publique dans le document (ou ajouter dynamiquement une propriété à ton select pour faire plus propre) qui te permettra de checker si tu peux ou non faire le onchange.
 
Exemple :
 

<body onload="javascript:document.myForm.mySelect.canChange = false;document.myForm.mySelect.selectedIndex = 2;">
   <form name="myForm">
      <select name="mySelect" onchange="(this.canChange)?alert(this.selectedIndex):this.canChange = true;">
          <option value="1">1</option>
          <option value="2">2</option>
          <option value="3">3</option>
          <option value="4">4</option>
          <option value="5">5</option>
      </select>
   </form>
</body>


 
Une autre solution plus sexy consiste à ne pas écrire "onchange" dans ta balise <select> mais de le créer à la volée depuis le script JavaScript, à la fin du onload du body. Mais j'ai pas la syntaxe en tête, et vu que l'autre solution marche aussi...


Message édité par MagicBuzz le 07-10-2003 à 19:45:27
Reply

Sujets relatifs:

Leave a Replay

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