Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1371 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Retouver le form englobant sans partir d'un element

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Retouver le form englobant sans partir d'un element

n°1774744
phenxdesig​n
Posté le 20-08-2008 à 10:13:40  profilanswer
 

Bonjour, je reconnais que ma question est pas mal tordue, j'ai cherché mais j'ai rien trouvé la dessus. En fait, j'ai besoin de retrouver le form qui englobe la balise <script> qui contient mon code, ceci pour faire des trucs qui, je le pense ne sont pas importantes pour ma question (à moins que vous vouliez savoir).
Je ne sais pas comment faire, ni si c'est possible de retrouver cette balise <form> sans avoir reference à aucun element de la DOM au depart...  
Pour info, j'utilise PrototypeJS comme framework.
 
Merci bien !

mood
Publicité
Posté le 20-08-2008 à 10:13:40  profilanswer
 

n°1774746
FlorentG
Unité de Masse
Posté le 20-08-2008 à 10:16:56  profilanswer
 

Si le code est dans un fichier externe, genre :

Code :
  1. <form method="post" action="pouet">
  2.   <div>
  3.      <script type="text/javascript" src="supercode.js"></script>
  4.      ....
  5.   </div>
  6. </form>


Et à condition que ce code n'est appellé qu'une seule fois (évidemment), tu peux toujours récupérer tous les <script>, regarder lequel a le bon src, puis itérer sur les parents et voilà [:dawa]

n°1774751
phenxdesig​n
Posté le 20-08-2008 à 10:21:34  profilanswer
 

Ouais, mais c'est en inline :p
Puis, c'est assez bourrin !
J'ai aussi déjà une fonction qui permet de recuperer le form englobant à partir d'un element :

Code :
  1. function getSurroundingForm(oElement) {
  2.   if (!oElement) {
  3.     return null;
  4.   }
  5.  
  6.   if (oElement.nodeName.match(/^form$/i)) {
  7.     return oElement;
  8.   }
  9.  
  10.   return getSurroundingForm(oElement.parentNode);
  11. }


Elle fonctionne déjà très bien, et du coup, j'aurais pensé ecrire une balise quelconque dans la dom, juste apres le script, executer cette fonction dessus, et virer l'élement.  
J'essaie de suite, pour voir

n°1774754
FlorentG
Unité de Masse
Posté le 20-08-2008 à 10:30:06  profilanswer
 

Je suis con : fou un id sur le script et pis voilà [:dawa]

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  3. <head>
  4.  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5.  <title></title>
  6. </head>
  7. <body>
  8.  <div>
  9.   <form action="pouet.php" method="post">
  10.    <div>
  11.     <script id="ze-script" type="text/javascript">
  12.      window.onload = function() {
  13.       var script = document.getElementById('ze-script');
  14.       var parent = script.parentNode;
  15.       while(parent.tagName.toLowerCase() !== 'form') {
  16.        parent = parent.parentNode;
  17.       }
  18.       alert(parent.action);
  19.      }
  20.     </script>
  21.    </div>
  22.   </form>
  23.  </div>
  24. </body>
  25. </html>

n°1774756
FlorentG
Unité de Masse
Posté le 20-08-2008 à 10:30:50  profilanswer
 

Ou un id sur le form en fait :D Maintenant je ne sais pas trop si ton script est utilisé à plusieurs endroits [:petrus dei]

n°1774758
phenxdesig​n
Posté le 20-08-2008 à 10:35:28  profilanswer
 

FlorentG a écrit :

Je suis con : fou un id sur le script et pis voilà [:dawa]

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  3. <head>
  4.  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5.  <title></title>
  6. </head>
  7. <body>
  8.  <div>
  9.   <form action="pouet.php" method="post">
  10.    <div>
  11.     <script id="ze-script" type="text/javascript">
  12.      window.onload = function() {
  13.       var script = document.getElementById('ze-script');
  14.       var parent = script.parentNode;
  15.       while(parent.tagName.toLowerCase() !== 'form') {
  16.        parent = parent.parentNode;
  17.       }
  18.       alert(parent.action);
  19.      }
  20.     </script>
  21.    </div>
  22.   </form>
  23.  </div>
  24. </body>
  25. </html>



je crois que je suis aussi con que toi :D
 
ha mais, le script est utilisé plein plein de fois ... hummm, en fait, je genere ce javascript par PHP (crado ou pas, c'est comme ça :D) pour faire des controles avancées (du genre datepicker, etc) et depuis longtemps, le coté PHP doit connaitre le nom du formulaire pour que ça fonctionne bien, on doit virer cette contrainte (projet Mediboard)

n°1774760
FlorentG
Unité de Masse
Posté le 20-08-2008 à 10:36:29  profilanswer
 

Fout un id aléatoire au pire, si tu peux tout générer

n°1774770
phenxdesig​n
Posté le 20-08-2008 à 10:51:07  profilanswer
 

Je peux tout generer, j'essaie avec ça. Je peux aussi mettre une variable globale ou statique incrementée pour etre sur

n°1774773
phenxdesig​n
Posté le 20-08-2008 à 10:54:06  profilanswer
 

Bon, ça à l'air de marcher avec uniqid(rand(), true);
Si on generer 2 fois le meme ID dans la meme page, on a vraiment pas de bol quand même, mais vu la taille du projet, ça doit bien déjà exister un generateur de uuid

n°1774784
phenxdesig​n
Posté le 20-08-2008 à 11:15:38  profilanswer
 

Bon, ca marche, mais ca implique pas mal de code JS généré en PHP (encore plus qu'avant). Je pense que je vais refactorer tout ça, et presque tout faire du coté JS.
 
En tout cas merci de ton aide !! :)

mood
Publicité
Posté le 20-08-2008 à 11:15:38  profilanswer
 

n°1774785
FlorentG
Unité de Masse
Posté le 20-08-2008 à 11:16:01  profilanswer
 

Yes :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Retouver le form englobant sans partir d'un element

 

Sujets relatifs
Générer des PDF à partir d'une BD PHP[Shell] - Création de comptes a partir d'un fichier txt
[ACCESS] Remplir une table a partir d'une requête SQL en VB[Excel] Rechercher un élément différent - Résolu
Soucis de form dans un form - help svpRemplir BDD mysql a partir d'un fichier XML
[javascript] modifier un selectbox à partir d'un iframeScript pr bloquer laffichage de mon site à partir d'un autre site web?
Création d'états à partir d'un état existant servant de fondaffichage liste sélectionnée à partir d'un select
Plus de sujets relatifs à : Retouver le form englobant sans partir d'un element


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR