11487 sujets

JavaScript, DOM et API Web HTML5

Bonjour bonjour!

Bon.. pour une raison qui serait longue et compliqué à expliquer... j'utilise un input hidden afin de garder une valeur importante et qui peut être différente selon le cas.. et j'aurais besoin de récupérer cette valeur un peu plus loin dans ma page html...

Le prob, c'est que je suis pas capable de récupérer cette valeur (que j'utilise ensuite dans plusieurs liens..)

Comment on fait?

j'ai fait:


<a href="page.php?store=selection.inputStoreId.value">Réception</a>


selection est le nom de ma form.
inputStoreId est le nom de mon input.

Mais bon, ca ne fonctionne pas car une fois sur la page appelée, la valeur de store est égal à "selection.inputStoreId.value" et non la valeur de ce input Smiley sweatdrop

Quelqu'un pourrait-il m'aider?

Mici!!

Roxy

PS: Non je ne peux utiliser une variable php (puisque j'utilise déjà du php) parce que c'est côté serveur et non côté client... Pour ce qui est d'une variable javascript... j'ai essayé mais ca ne marchait pas.... (peut-être pour la même raison qui est que je ne pouvais la récupérer... je ne sais pas..) je sais tout de même qu'avec le input, j'ai la bonne valeur.. il me suffit juste de la récupérer Smiley lol
Modifié par Roxy (31 Mar 2005 - 16:02)
Pour récupérer la valeur d'un champ :
<form id="ID_FORMULAIRE">
(...)
<input type="hidden" name="inputStoreID" />
(...)
</form>

<script type="text/javascript">
<!--
function aller()
{
var valeur = document.forms['ID_FORMULAIRE'].elements['inputStoreID'].value; // Contient la valeur de l'<input />
document.location.href = 'page.php?store='+valeur;
}
-->
</script>

<a href="javascript:aller();">Go</a>


Cette méthode discrimine ceux qui n'ont pas le JavaScript activé ! Dis nous à quoi te sert cet <input /> je suis sûr qu'on peut trouver une solution accessible Smiley smile
Bon, voici.. c'est un peu compliqué à expliquer, mais vais essayer Smiley biggrin


J'ai une page où j'affiche une liste générale de tous les clients de l'entreprise où je travaille (nom de l'entreprise, téléphone, etc..).. à partir d'une base de donnée (j'utilise du php)

mais j'utilise un menu javascript qui, lorsque la souris passe sur le nom de l'entreprise, affiche un petit menu (semblable aux menus de right-click) et où j'ai plusieurs liens du genre..

ajouter client
modifier client
afficher détails client
etc...

Le lien qui est sur le nom du client, appel la fonction javascript qui fait afficher le menu. Le menu lui, est configuré (avec ses liens), plus bas dans la page...

Le problème est le suivant, à la configuration du menu, où je spécifie les liens, il me faut une variable où j'aurais gardé en mémoire le id du client, affin de modifier et d'afficher (selon le lien clické) le bon client.

Mais avec le php c'est côté serveur et donc, si j'utilise une variable php, je me retrouve toujours avec le id du dernier client.


Voici le code (pour simplifier):


Fonctions du menu

<HEAD>
<script src="../medias/dw_viewport.js" type="text/javascript"></script>
<script type="text/javascript">
var menuLayers = {
  timer: null,
  activeMenuID: null,
  offX: 4,   // horizontal offset 
  offY: 6,   // vertical offset 
  show: function(id, e) {  	
    var mnu = document.getElementById? document.getElementById(id): null;
    if (!mnu) return;
    this.activeMenuID = id;
    if ( mnu.onmouseout == null ) mnu.onmouseout = this.mouseoutCheck;
    if ( mnu.onmouseover == null ) mnu.onmouseover = this.clearTimer;
    viewport.getAll();
    this.position(mnu,e);
  },
  
  hide: function() {
    this.clearTimer();
    if (this.activeMenuID && document.getElementById) 
      this.timer = setTimeout("document.getElementById('"+menuLayers.activeMenuID+"').style.visibility = 'hidden'", 200);
  },
  	
  position: function(mnu, e) {
    var x = e.pageX? e.pageX: e.clientX + viewport.scrollX;
    var y = e.pageY? e.pageY: e.clientY + viewport.scrollY;
    
    if ( x + mnu.offsetWidth + this.offX > viewport.width + viewport.scrollX )
      x = x - mnu.offsetWidth - this.offX;
    else x = x + this.offX;
  
    if ( y + mnu.offsetHeight + this.offY > viewport.height + viewport.scrollY )
      y = ( y - mnu.offsetHeight - this.offY > viewport.scrollY )? y - mnu.offsetHeight - this.offY : viewport.height + viewport.scrollY - mnu.offsetHeight;
    else y = y + this.offY;
    
    mnu.style.left = x + "px"; mnu.style.top = y + "px";
    this.timer = setTimeout("document.getElementById('" + menuLayers.activeMenuID + "').style.visibility = 'visible'", 200);
  },
  
  mouseoutCheck: function(e) {
    e = e? e: window.event;
    // is element moused into contained by menu? or is it menu (ul or li or a to menu div)?
    var mnu = document.getElementById(menuLayers.activeMenuID);
    var toEl = e.relatedTarget? e.relatedTarget: e.toElement;
    if ( mnu != toEl && !menuLayers.contained(toEl, mnu) ) menuLayers.hide();
  },
  
  // returns true of oNode is contained by oCont (container)
  contained: function(oNode, oCont) {
    if (!oNode) return; // in case alt-tab away while hovering (prevent error)
    while ( oNode = oNode.parentNode ) 
      if ( oNode == oCont ) return true;
    return false;
  },

  clearTimer: function() {
    if (menuLayers.timer) clearTimeout(menuLayers.timer);
  }
  
}
</script>
</HEAD>



Le formulaire pour garder la valeur:

<FORM name=selection>
<input type="text" name="inputStoreId">



Le lien au menu (dans une boucle while qui lit le résultat de la requête sql):

<A HREF="javascript:;" onmouseover="menuLayers.show('mnuStores', event); selection.inputStoreId.value = <?php echo $storeId; ?>" onmouseout="menuLayers.hide()"> <?php echo $storeSurnom; ?> </A>



Description du menu, après la fin de la boucle et avant la fin du formulaire:

<div id="mnuStores" class="menu">
  <ul>
    <li id=gras>Magasin</li>
    <li><a href="page1.php?store= selection.inputStoreId.value">Modifier</a></li>
    <li><a href="page2.php?store= selection.inputStoreId.value">Supprimer</a></li>
    <li><a href="page1.php?store= selection.inputStoreId.value">Coordonnées</a></li>
   </ul>
</div>



J'espère que c'est clair... j'ai enlevé le code qui n'est pas relié à mon problème pour éclaircir un peu et pour ne pas que vous perdiez votre temps à tout lire Smiley lol

Merci Smiley biggrin


EDITÉ: Pour ce qui est de la solution avec le input et la manière de le récupérer que tu m'as donné Nyro... ca serait possible, mais ca veut dire que lorsque je veux faire mon liens dans la description du menu, il faudrait que mes liens appel une fonction javascript avec un paramètre qui dit quel lien a été cliqué (exemple: modifier client ou supprimer client) et que dans la fonction javascript je fasse une relocalisation avec le bon lien. J'avoue que s'il y a un meilleur moyen, je préfererais un autre moyen, mais sinon, je crois que de cette manière ca devrait fonctionner Smiley lol
Modifié par Roxy (31 Mar 2005 - 17:16)
Ahhh!! J'ai essayé avec cette manière et ca marcheuhh!!

Mici Smiley smile

Mais bon, comme dit plus haut, si y a d'autres moyen je serais toute ouïe Smiley smile mais pour l'instant au moins ca marche!! Smiley lol


*Roxy pleure de joie Smiley bawling