Question javscript

Question javscript - HTML/CSS - Programmation

Marsh Posté le 13-01-2010 à 12:27:01    

Bonjour,
 
J'ai créé cette fonction javascript qui me permet de changer le style des lignes sélectionnées dans un tableau/formulaire et de checker le bouton radio correspondant :
 

Code :
  1. function select(tr,idradio)
  2. {
  3. if (tr.className!="police_table2" )
  4. {
  5.  var lestr = document.getElementsByName("trselect" );
  6.  for (i=0; i<lestr.length; i++)
  7.  {
  8.   if (lestr[i].className=="police_table2" )
  9.   {
  10.    lestr[i].className="police_table";
  11.   }
  12.  }
  13.  tr.className="police_table2";
  14.  document.getElementById(idradio).checked=true;
  15. }
  16. }


 
Ce script marche très bien à condition qu'il n'y ai qu'un seul tableau/formulaire.
 
Si je veux en ajouter un autre il faut que je fasse un nouveau script adapté aux nouveaux idtr et idradio et c'est pas top.
 
Le truc que j'aimerais bien faire c'est de garder les même idtr et idradio pour tous les formulaire en ne changeant juste que l'id du formulaire et arriver à un code normalisé comme celui-ci
 

Code :
  1. function select(tr,idradio,idform)
  2. {
  3. if (tr.className!="police_table2" )
  4. {
  5.  var lestr = document.idform.getElementsByName("trselect" );
  6.  for (i=0; i<lestr.length; i++)
  7.  {
  8.   if (lestr[i].className=="police_table2" )
  9.   {
  10.    lestr[i].className="police_table";
  11.   }
  12.  }
  13.  tr.className="police_table2";
  14.  document.idform.getElementById(idradio).checked=true;
  15. }
  16. }


En plaçant l'idform en paramètre.
Mais évidemment ce code ne marche pas mais l'idée y est.
Ca m'éviterai de créer une version de ce script pour chacun de mes formulaires ...
 
Savez-vous comment je peux faire ça ?

Reply

Marsh Posté le 13-01-2010 à 12:27:01   

Reply

Marsh Posté le 13-01-2010 à 14:06:57    

tu peux poster un extrait de ton html?


Message édité par pataluc le 13-01-2010 à 14:07:04
Reply

Marsh Posté le 13-01-2010 à 14:26:23    

Pas de problème :
 

Code :
  1. <!--Table 1 !-->
  2. <table name="contrat_hardware">
  3. <tr id="trselect<?php echo $ContratHW_Id; ?>" name="trselect"  onclick="select(this,<?php echo $ContratHW_Id; ?> );" class="police_table"><td><input name="radio" type="radio" id="<?php echo $ContratHW_Id; ?>" /></td>
  4. <td><?php echo $Solution_Type; ?></td>
  5. <td><?php echo $HW_Num_Serie; ?></td>
  6. <td><?php echo $ContratHW_Num_Order; ?></td>
  7. <td><?php echo $ContratHW_Niveau_Maintenance; ?></td>
  8. <td><?php echo $ContratHW_Date_Fin_Garantie_HW_Customer; ?></td>
  9. <td><?php echo $ContratHW_Date_Fin_Garantie_HW_Supplier; ?></td>
  10. <td><?php echo $ContratHW_ContractingOrg; ?></td>
  11. <td><?php echo $ContratHW_Contractor; ?></td>
  12. </tr>
  13. </table>
  14. <!-- Table 2 !-->
  15. <table name="contrat_sw">
  16. <tr id="trselect<?php echo $ContratSW_Id; ?>" name="trselect"  onclick="select(this,<?php echo $ContratSW_Id; ?> );" class="police_table"><td><input name="radio" type="radio" id="<?php echo $ContratSW_Id; ?>"  /></td>
  17. <td><?php echo $Solution_Type; ?></td>
  18. <td><?php echo $Product_Designation; ?></td>
  19. <td><?php echo $Product_Version; ?></td>
  20. <td><?php echo $ContratSW_Product_License; ?></td>
  21. <td><?php echo $ContratSW_Etat; ?></td>
  22. <td><?php echo $ContratSW_Product_NiveauMaint; ?></td>
  23. <td><?php echo $ContratSW_Product_DateExp; ?></td>
  24. <td><?php echo $ContratSW_Cares; ?></td>
  25. </tr>
  26. </table>
  27. <!-- Table 3 !-->
  28. <table name="offres">
  29. <tr id="trselect<?php echo $Offre_Id; ?>" name="trselect" onclick="select(this,<?php echo $Offre_Id; ?> );"  class="police_table"><td><input name="radio" type="radio" id="<?php echo $Offre_Id; ?>"  /></td>
  30. <td><?php echo $Offre_Libelle; ?></td>
  31. <td><?php echo $Offre_Date; ?></td>
  32. <td><?php echo $Offre_Tarif; ?></td>
  33. </tr>
  34. </table>


 
Je voudrais que la fonction javascript select prenne en compte le name de la table pour faire son traitement ...
Faudrait quelquechose du genre document.name_de_la_table.getElementById ou getElementByName, mais bon ça marche pas ...
 
Si tu as une idée, je te remercie de me le faire savoir !


Message édité par Magg27 le 13-01-2010 à 14:27:09
Reply

Marsh Posté le 13-01-2010 à 15:26:06    

pour aller au plus simple, il faudrait utiliser jquery (ou un autre framework javascript), qui te permettrait d'écrire:

Code :
  1. function select(tr,idradio,idform)
  2. {
  3.   if (tr.className!="police_table2" )
  4.   {
  5.     $(idform + " > trselect" ).each(function(){
  6.         if (this.className=="police_table2" )
  7.         {
  8.           this.className="police_table";
  9.         } 
  10.       }
  11.     }
  12.     tr.className="police_table2";
  13.     $(idform + " #" + idradio).checked = true;
  14.   }
  15. }

(attention, j'ai écrit ca comme ca c'est pas testé je sais pas si ca marche, mais c'est l'idée...)

 


sinon j'ai un peu de mal à voir l'intérêt d'avoir 3 tableaux d'une ligne chacun???


Message édité par pataluc le 13-01-2010 à 15:28:02
Reply

Marsh Posté le 13-01-2010 à 15:46:19    

OK Merci pataluc, ça tombe bien j'ai jquery, je vais donc essayer ton script !

 

Il n'y a pas qu'une ligne dans chaque tableau : c'était qu'un extrait du code, il y a une boucle for pour chacune des table.


Message édité par Magg27 le 13-01-2010 à 15:46:45
Reply

Sujets relatifs:

Leave a Replay

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