2010-05-20 4 views
8

Salut, j'ai le code html suivant:jquery élément de trouver à côté de l'autre

<p> 
    <input type="text" name="field1"/> <input type="hidden" name="fieldh1"/> 
    <button type="button" class="sendInfo">Send</button> 
</p> 
<p> 
    <input type="text" name="field2" /> <input type="hidden" name="fieldh2"/> 
    <button type="button" class="sendInfo">Send</button> 
</p> 

Ce que je veux est que lorsque l'utilisateur clique sur le bouton, je dois envoyer à l'aide ajax le contenu du champ sur le terrain.

C'est ce que j'essaie de faire sans succès.

$(function() { 
     $('button.sendInfo').live('click', function() { 
      var id = $(this).parent().next('[type=text]').val(); 
      alert(id); 
     }); 
    }); 

je prévois de définir quels sont les types d'utilisateur dans la zone de texte à champ caché, et la valeur reçue de l'appel ajax à la normale zone de texte. Mais le problème est que je ne peux même pas obtenir la valeur de la zone de texte qui est dans la même ligne que le bouton sur lequel l'utilisateur clique. Quelqu'un peut-il m'aider? Merci beaucoup.

Répondre

18

Essayez:

$(this).siblings('input:text').val(); 

Ou changer next à find:

$(this).parent().find('[type=text]').val(); 

que next ne recherche que la suivante frères et soeurs immédiat.

+1

OUI! Cela fonctionne très bien: $ (this) .parent(). Find ('[type = text]') .val(); Merci d'aider l'homme – thiagoleite

+0

trouver seulement fonctionne s'il n'y a rien entre les deux .. – stuartdotnet

0

Pouvez-vous sélectionner votre zone de texte en utilisant id?

$(function() { 
    $('button.sendInfo').live('click', function() { 
     //what about this: 
     var id = $('#textBoxID').val(); 
     alert(id); 
     //or this 
     var id2 = $('+ input', this).val(); 
     alert(id2); 
    }); 
}); 
+1

Non parce que j'ai beaucoup de zones de texte et je ne veux pas définir les gestionnaires pour eux tous individuellement. Je dois identifier la zone de texte juste avant le bouton appuyé – thiagoleite

+0

ok, donc, peut-être, quelque chose qui ressemble à la deuxième option devrait fonctionner ... – Rbacarin

1

Votre problème est que « à côté() » va à l'autre frère du parent - et le parent est la balise <p>, de sorte que le frère, si elle existe, est la balise <p> suivante.

Vous voulez $(this).parent().children('[type=text]').val() ou $(this).parent().find('[type=text]')

Questions connexes