2009-11-07 4 views
0

J'ai deux balises div comme indiqué ci-dessous sur ma page. Lorsque je référence la valeur de l'élément itemName, en utilisant $ ('# itemName'). Val(); que j'ai dans les deux divs, j'ai toujours la valeur de l'élément dans le premier div qui est "" (vide). Existe-t-il un moyen d'obtenir la valeur de l'élément itemName dans la face avant de la seconde div en utilisant jquery?Obtention de la valeur d'un élément à l'intérieur de la division frontbox à l'aide de jquery

information div

<div id="info" style="display: none;"> 
<center> 
<strong>Name</strong> 
<input id="itemName" type="text"/> 
<br/> 
<br/> 
<strong>Price </strong> 
<input id="itemPrice" type="text"/> 
<br/> 
<br/> 
</center> 
</div> 

facebox div

<div id="facebox" style="top: 27.3px; left: 478px; display: none;"> 
<div class="popup"> 
<table> 
<tbody> 
<tr> 
</tr> 
<tr> 
<td class="b"/> 
<td class="body"> 
<div class="content" style="display: block;"> 
<div id="info" style=""> 
<center> 
<strong>Name</strong> 
<input id="itemName" type="text"/> 
<br/> 
<br/> 
<strong>Price </strong> 
<input id="itemPrice" type="text"/> 
<br/> 
<br/> 
<input type="button" onclick="updateTab();" value="Add"/> 
</center> 
</div> 
</div> 

Merci Vous

Répondre

1

Un id élément doit être unique dans un document. Votre document est invalide et c'est l'une des conséquences.

Utilisez un validator, c'est une forme bon marché de contrôle qualité qui permet de saisir facilement des fruits mûrs.

+0

Un validateur n'attraperont pas cela car le contenu de la facebox est créé dynamiquement à partir du contenu que vous sélectionnez. Il pourrait être préférable d'utiliser des classes au lieu d'ID. Mais je pense que son vrai problème est d'obtenir les données de la facebox après qu'il a été révélé - ce qui est ce que ma réponse adresse. – Mottie

1

Les ID doivent être uniques sur la page - la réponse simple est que vous devez renommer l'un d'entre eux.

Si vous ne pouvez vraiment pas les changer, vous pouvez ensuite utiliser quelque chose comme ceci:

$('#facebox input[type=text]:first').val(); 
+0

Merci pour la réponse Greg. Le problème est le 2ème div est généré en utilisant le plugin facebox, et le 1er div est ce qu'il utilise pour générer cela. – miket

3

Si vous regardez à l'intérieur facebox.js, vous verrez qu'il ya un événement qui est déclenché lorsque facebox ouvre , donc vous avez juste besoin de lier à cet événement, puis obtenir la valeur:

$(document).bind('reveal.facebox', function() { 
$('#facebox #itemName').val(); 
}) 
+0

Merci! Vous venez de me sauver des heures de tête qui claquent. – dave

Questions connexes