2010-12-10 22 views
5

Tengo el siguiente código HTML:jQuery obtener el texto de entrada anterior

<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> 

Por cada clic en check_quest Quiero conseguir un valor de entrada correspondiente. ¿Cómo puedo hacerlo usando la consulta? `He intentado lo siguiente:

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

pero ésta y otras combinaciones de texto prev() y Val no se muestran el texto que he puesto en ese campo de texto.

+0

Gracias a todos. La primera respuesta relacionada con el tiempo de publicación/edición dio la respuesta correcta marcada como respuesta. Todas las respuestas correctas fueron votadas. Gracias a todos los que respondieron :-) –

Respuesta

11

¿Ha intentado $(this).prev('input')?

EDIT:

quiero decir: $(this).prevAll('input').val().

+0

sí, sin resultado, igual que el anterior. –

+0

Debe ser anterior a ALL en lugar de solo prev, ya que la etiqueta previa de ancla es etiqueta div. –

+0

Sí, me di cuenta :) Lo más importante es utilizar val() en lugar de texto(). –

3

Trate

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

Live example

+0

devuelto indefinido. –

+0

@Yaroslav: Gah! Escribí 'prev' cuando quise decir' prevAll'. Fijo. –

7

Debería funcionar con val().

Aquí es working demo

Incluso se está trabajando con

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

Prueba esto:

Código 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()) 
});  

Aquí es una demostración de trabajo: http://jsfiddle.net/tVcKS/

+0

esto no funcionará. Usted modificó el código original. 'respuesta' es una clase que puede ocurrir más de una vez. – jAndy

+0

jAndy tiene toda la razón. De lo contrario, ya lo habría hecho :-) –

+0

ok, pero podría usar identificadores únicos, si tiene más de una entrada en una página – Jan

1

Here es un ejemplo de trabajo con dos entradas que le mostrará los diferentes valores al hacer clic en los enlaces

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

Creo

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

sería la mejor manera de hacerlo.

Cuestiones relacionadas