Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problema funcion next()

Estas en el tema de Problema funcion next() en el foro de Frameworks JS en Foros del Web. Hola, No consigo que me funcione la funcion next en este proceso y llevo 2 dias y no se porque, a ver si alguien me ...
  #1 (permalink)  
Antiguo 18/11/2012, 16:29
 
Fecha de Ingreso: abril-2011
Ubicación: Leon
Mensajes: 61
Antigüedad: 13 años
Puntos: 2
Problema funcion next()

Hola,
No consigo que me funcione la funcion next en este proceso y llevo 2 dias y no se porque, a ver si alguien me puede echar una mano.

Es un simple formulario, al quitar el foco a un input quiero que aparezca o desaparezca el campo siguiente etiquetado con una det. clase, pero el dom no encuentra el objeto posterior... tengo esto en el html:

<td><input class="services" type="text" name="s5" id="s5" /></td>
<td><input class="tiempos" type="text" name="t5" id="t5" /></td>
<td><input class="services" type="text" name="s6" id="s6" /></td>
<td><input class="tiempos" type="text" name="t6" id="t6" /></td>
<td><input class="services" type="text" name="s7" id="s7" /></td>
<td><input class="tiempos" type="text" name="t7" id="t7" /></td>


Y el javascript esto:

$('.services').blur(function() {
if ($(this).val ( ) == "" ) {
$(this).next('.tiempos').hide( );
}
});

El problema es que no me coge el siguiente objeto con la clase tiempos, he probado mil cosas y no he sido capaz de que me funcione. De hecho he probado a poner solo next() para que coja el siguente objeto y me pone siempre undefined... es que no hay objetos despues?

mil gracias
  #2 (permalink)  
Antiguo 18/11/2012, 18:40
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: Problema funcion next()

Te estas equivocando al interpretar el arbol DOM mira:

Código HTML:
Ver original
  1.     <tr>
  2.         <td>
  3.             <input class="services" type="text" name="s5" id="s5" />
  4.         </td>
  5.         <td>
  6.             <input class="tiempos" type="text" name="t5" id="t5" />
  7.         </td>
  8.         <td>
  9.             <input class="services" type="text" name="s6" id="s6" />
  10.         </td>
  11.         <td>
  12.             <input class="tiempos" type="text" name="t6" id="t6" />
  13.         </td>
  14.         <td>
  15.             <input class="services" type="text" name="s7" id="s7" />
  16.         </td>
  17.         <td>
  18.             <input class="tiempos" type="text" name="t7" id="t7" />
  19.         </td>
  20.     </tr>

Como veras los input no son "hermanos" sino que cada uno esta dentro de un TD por ende no puedes llamarlos con next() ya que cada input es el unico nodo dentro del TD.

Para moverte por los inputs deberias salir a su nodo padre y de ahi si pasar al proximo elemento td y ahi acceder a su hijo input x ej:

Código Javascript:
Ver original
  1. $('.services').blur(function() {
  2.     if ($(this).val ( ) == "" ) {
  3.         $(this).parent().next().children(".tiempos").hide();
  4.     }
  5. });

Prueba aver si funciona. Salu2!
  #3 (permalink)  
Antiguo 19/11/2012, 10:32
 
Fecha de Ingreso: abril-2011
Ubicación: Leon
Mensajes: 61
Antigüedad: 13 años
Puntos: 2
Respuesta: Problema funcion next()

Muchas gracias djaevi, voy a probarlo pero seguro que funciona, estoy empezando con JS y hay muchos conceptos que voy aprendiendo a medida que me van surgiendo, como este que a partir de ahora me ha quedado claro.

Muchas gracias de nuevo
Santiago

Etiquetas: formulario, funcion, html, input
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:40.