2011-01-05 25 views
5

HTMLBuscar la siguiente área de texto usando jQuery

<tr id="rowId"><td><textarea class="inputTextarea"></textarea></td><td><textarea class="inputTextarea"></textarea></td></tr> 
<tr id="rowId2"><td><textarea class="inputTextarea"></textarea></td><td><textarea class="inputTextarea"></textarea></td></tr> 
<tr id="rowId3"><td><textarea class="inputTextarea"></textarea></td><td><textarea class="inputTextarea"></textarea></td></tr> 

proporcionado Como Sé rowid, ¿cómo puedo encontrar la siguiente área de texto en esta página, comenzando en cualquier punto arbitrario. No me refiero a NINGUNA entrada, solamente textarea. Necesito poder comenzar EN CUALQUIER fila, y avanzar al siguiente área de texto, esencialmente bajando por las filas.

EDITAR Sobre la base de las respuestas, que utiliza el código siguiente para recorrer la fila a fila áreas de texto:

var curElt = $('#' + startAt); //startAt is the first row id 

     for(var i=1; i < 10; i++) { 

      $(curElt).find('textarea').eq(0).val(i); 
      $(curElt).find('textarea').eq(1).val(i+1); 

      curElt = $(curElt).next(); 
     } 
+2

Según la variedad de respuestas, parece que su pregunta no es lo suficientemente clara. ¿Quiere decir que quiere el equivalente a presionar la tecla Tab, enfocando el siguiente área de texto por orden de código fuente/tabIndex? ¿Qué tiene que ver el Id. De la fila con esto? – Phrogz

+0

Tengo un montón de filas, cada una tiene una identificación única. Un usuario puede comenzar a pegar datos en cualquier área de texto dada (hay 2 elementos de área de texto por fila). Los datos serán datos CSV de Excel. Mi trabajo es rellenar las áreas de texto comenzando el usuario pegado (por lo tanto sé la identificación de la fila desde la que están comenzando) y en adelante. No estoy seguro de cómo explicarme mejor. Supongo que la comparación TAB funciona. – sarsnake

Respuesta

9

puede utilizar los métodos next y find:

$('#' + current_row_id).next().find('textarea').eq(0); 

next obtendrá el siguiente hermano, y luego find encontrará todos los elementos dentro del conjunto que coinciden con el pasado-en el selector (s), a continuación, eq(0) se agarra el primer elemento en el conjunto resultante de regresar de find.

+0

si estoy en el segundo textarea, ¿ejecutaré esto, me dará el primer textarea de rowId3? – sarsnake

+1

El siguiente() método es para hermanos. Si selecciona una fila de tabla, entonces no encontrará elementos de área de texto entre los hermanos o la fila. –

+0

Gracias Jacob, muy útil – sarsnake

5
$('#rowId2').find('textarea'); 

que se encuentra tanto en los niños de la fila. Si desea que el primero de ellos, ya sea:

$('#rowId2').find('textarea').eq(0); //jQuery object 
$('#rowId2').find('textarea')[0]; //DOM Element 

Editar: Si sólo conoce una fila y quiere encontrar la primera caja de texto en la fila siguiente:

$('#rowId').next().find('textarea').eq(0); 
+0

que ocurre si estoy comenzando en rowId y necesito encontrar el siguiente textarea (que está en rowId2). en ese momento, no sé rowId2 – sarsnake

+0

¿sería más rápido encontrar todas las áreas de texto en la página? – sarsnake

+2

@gnomixa No sé a qué te refieres. Tendrá que ser más claro sobre lo que significa "siguiente". – Phrogz

1

Prueba esto:

$("#rowID textarea:first-child").val() 
4
$textarea = $('#rowId textarea').eq(0); 

$nextarea = $textarea.closest('tr').next().find('textarea').eq(0); 

Solo para aclarar, .fn.next $() busca la siguiente hermanos en el DOM.

  1. A partir del área de texto, primero usted tiene que encontrar su matriz-tr ( $ textarea.closest ('tr')).
  2. A partir de ahí, usar a continuación para encontrar la siguiente tr (.Next())
  3. Por último, encontramos la primera área de texto dentro de que tr ( .find ('textarea'). Eq (0))
Cuestiones relacionadas