Foros del Web » Programando para Internet » Jquery »

Cómo detectar un input con jquery

Estas en el tema de Cómo detectar un input con jquery en el foro de Jquery en Foros del Web. Hola que tal; Bien, pues esa es la pregunta, estoy comenzando a usar este framework y me he encontrado con el detalle de no dar ...
  #1 (permalink)  
Antiguo 26/10/2008, 10:11
Avatar de Gerifaltus  
Fecha de Ingreso: junio-2005
Ubicación: Tabasco, México
Mensajes: 180
Antigüedad: 18 años, 9 meses
Puntos: 4
Cómo detectar un input con jquery

Hola que tal;

Bien, pues esa es la pregunta, estoy comenzando a usar este framework y me he encontrado con el detalle de no dar con la función/metodo para detectar un inputo específico y apartir de ahi que se ejecute un determinado código javascript (ajax)

Lo que tengo es esto, pero no funciona, es decir aunque el input en cuestion no existe en el HTML el código se ejecuta.

Código:
$(document).ready(function(){
    if($('#tmp_id_ciudad')){
		var valorCiudad = $('#tmp_id_ciudad').attr('value'); 
		var valorEstado = $('#Estado').attr('value');
......
.....
....
    }
}
Lo que yo hacia cuando no usaba Jquery, era esto

Código:
if(getElementById('id_elemento')){
var elemento = getElementById('id_elemento');
....
....
....
}
Saludos :)
__________________
:::.. Todo tiene un ¿Por qué? y un ¿Para qué? ..:::
:::.. Todo se reduce a un SI y a un No ..:::
  #2 (permalink)  
Antiguo 26/10/2008, 13:53
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Cómo detectar un input con jquery

El asunto es que $() no devuelve lo mismo que getElementById() porque tampoco hace lo mismo.

$() puede devolver, según los parámetros que le pases, varios objetos correspondientes a elementos del DOM. Por ejemplo podrías pedirle todos los input con $("INPUT") y entonces te devolvería todos los que hubiera. Así que, para contemplar esto de una forma más consistente. $ siempre te devuelve un array, incluso cuando te devuelve un sólo objeto. Más aún, te devuelve un array inclusocuando no se ha encontrado ningún objeto en absoluto.

¿Cómo podrías hacer lo mismo que quieres hacer tú, comprobar si hay o no hay ese input?

La primera opción sería:
Código javascript:
Ver original
  1. if ($('#tmp_id_ciudad').length > 0) {
  2.     valorCiudad = $('#tmp_id_ciudad').val();
  3.     valorEstado = $('#Estado').val();
  4. //...
  5. }

Es decir, compruebas si la longitud del array que te devuelve es mayor que cero, si hay alguno.


Pero hay una opción mejor. Más elegante, limpia y sencilla. No compruebes si está o no. Simplemente haz lo que quieras hacer. Quiero decir, si haces por ejemplo $('#tmp_id_ciudad').show() esto no te dará error, ni siquiera cuando no exista el elemento en cuestión.

SI lo que quieres es coger el valor de un campo, cógelo. Si no existe el campo te devolverá undefined, pero no dara error. Y para que no te dé undefined, simplemente pon un valor por defecto.

Código javascript:
Ver original
  1. valorCiudad = $('#tmp_id_ciudad').val() || 0;
  2. valorEstado = $('#Estado').val() || 0;


( Y, por cierto, que para coger el valor de un elemento de input, mejor utiliza val() )
  #3 (permalink)  
Antiguo 26/10/2008, 14:13
Avatar de Gerifaltus  
Fecha de Ingreso: junio-2005
Ubicación: Tabasco, México
Mensajes: 180
Antigüedad: 18 años, 9 meses
Puntos: 4
Respuesta: Cómo detectar un input con jquery

Gracias mi estimado Venkman, probaré la solución que me has dado y te cuento como me fue.

Por cierto no conocia la funcion "val", estuve analizando un chuletario de jquery y "creo que no vi val()" y me fui por la función que estuviera más cerca de recuperar el valor de un elemento.

Saludos y nuevamente gracias :)
__________________
:::.. Todo tiene un ¿Por qué? y un ¿Para qué? ..:::
:::.. Todo se reduce a un SI y a un No ..:::
  #4 (permalink)  
Antiguo 31/10/2008, 20:18
Avatar de Gerifaltus  
Fecha de Ingreso: junio-2005
Ubicación: Tabasco, México
Mensajes: 180
Antigüedad: 18 años, 9 meses
Puntos: 4
Respuesta: Cómo detectar un input con jquery

Que tal, no había podido contestar por que tenia mucho trabajo, bueno ahora ya no tengo trabajo jejee.

Mi estimado Venkman, probé la solución que me diste y sí funcionó, lo dejé con la segunda opción que me indicaste

Código:
      valorCiudad = $('#tmp_id_ciudad').val() || 0;
      valorEstado = $('#Estado').val() || 0;
Gracias :)

Saludos.
__________________
:::.. Todo tiene un ¿Por qué? y un ¿Para qué? ..:::
:::.. Todo se reduce a un SI y a un No ..:::
  #5 (permalink)  
Antiguo 01/11/2008, 03:15
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Cómo detectar un input con jquery

Me alegro :)
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 21:35.