2010-12-10 42 views
5

J'ai le code html suivant:jquery obtenir un texte d'entrée précédente

<div class="active_string"> 
       <input type="text" class="answer" /><div class="images"><img src="/images/myImage.png" alt="" /></div> 
       <a href="" class="check_quest" id="1">Click me</a> 
</div> 
    <div class="active_string"> 
       <input type="text" class="answer" /><div class="images"><img src="/images/myImage.png" alt="" /></div> 
       <a href="" class="check_quest" id="2">Click me</a> 
</div> 

Pour chaque clic sur check_quest Je veux obtenir la valeur d'une entrée correspondante. Comment puis-je le faire en utilisant la requête. 'ai essayé ce qui suit:

$(this).prev().prev().text() 

mais celui-ci et d'autres combinaisons de texte prev() et val ne montrent pas le texte Ive mis dans ce champ de texte.

+0

Merci à tous. La première réponse correspondant au temps d'affichage/d'édition a donné la bonne réponse marquée comme réponse. Toutes les bonnes réponses ont été rejetées. Merci à tous ceux qui ont répondu :-) –

Répondre

11

Avez-vous essayé $(this).prev('input')?

EDIT:

Je veux dire: $(this).prevAll('input').val().

+0

oui, pas de résultat, même chose que prev. –

+0

Il devrait être prevAll au lieu de juste prev, puisque l'étiquette de l'ancre prev est div tag. –

+0

Ouais, j'ai remarqué :) La chose la plus importante est d'utiliser val() au lieu de text() cependant. –

3

Essayez

$(this).prevAll("input[type=text]").val() 

Live example

+0

retourné indéfini. –

+0

@Yaroslav: Gah! J'ai tapé 'prev' quand je voulais dire' prevAll'. Fixé. –

7

Cela devrait fonctionner avec val().

est ici working demo

Même il travaille avec

$(this).prevAll("input[type=text]").val() 
0

Essayez ceci:

Code HTML

<div class="active_string"> 
    <input type="text" id="answer" /> 
    <div class="images"><img src="/images/myImage.png" alt="" /></div> 
    <a href="" class="check_quest" id="1">Click me</a> 
</div> 

JavaScript

$(".check_quest").click(function(event) 
{ 
    event.preventDefault(); 
    alert ($("#answer").val()) 
});  

Voici une démonstration de travail: http://jsfiddle.net/tVcKS/

+0

cela ne fonctionnera pas. Vous avez modifié le code d'origine. 'answer' est une classe qui peut se produire plus d'une fois. – jAndy

+0

jAndy a absolument raison. Autre chose je l'aurais déjà fait :-) –

+0

ok, mais vous pouvez utiliser des identifiants uniques, si vous avez plus d'une entrée sur une page – Jan

1

Here est un exemple de travail avec deux entrées qui vous montrera les différentes valeurs lorsque vous cliquez sur les liens

2
$(".check_quest").click(function() { 
    var answer = $(this).prevAll("input").first().val(); 
}); 
1

Je pense que

$(this).parent().find('input').val(); 

serait le meilleur chemin à faire.