2010-05-20 13 views
8

Hola tengo el siguiente código HTML:jQuery hallazgo siguiente elemento a otro

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

Lo que quiero es que cuando el usuario hace clic en el botón, tengo que enviar usando ajax los contenidos del campo de campo.

Esto es lo que estoy tratando de hacer sin éxito.

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

planeo para establecer lo que el usuario escribe en cuadro de texto para el campo oculto, y el valor recibido de la llamada AJAX al cuadro de texto normal. Pero el problema es que ni siquiera puedo obtener el valor del cuadro de texto que está en la misma línea que el botón en el que el usuario hace clic. ¿Alguien puede ayudarme? Muchas gracias.

Respuesta

18

Probar:

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

O cambiar next a find:

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

como next, solo podrá buscar la siguiente inmediata hermanos.

+1

SÍ! Esto funciona bien: $ (this) .parent(). Find ('[type = text]'). Val(); Gracias por ayudar al hombre – thiagoleite

+0

encontrar solo funciona si no hay nada en el medio ... – stuartdotnet

0

¿Puede seleccionar su cuadro de texto usando 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

No porque tengo muchos cuadros de texto y no quiero configurar controladores para ellos individualmente. Necesito identificar el cuadro de texto justo antes del botón presionado – thiagoleite

+0

ok, entonces, tal vez, algo que se parece a la segunda opción debería funcionar ... – Rbacarin

1

Su problema es que "next()" está pasando a la siguiente hermano del padre - y el padre es la etiqueta <p>, por lo que el hermano, si es que existe, es la <p> siguiente etiqueta.

¿Quieres $(this).parent().children('[type=text]').val() o $(this).parent().find('[type=text]')

Cuestiones relacionadas