Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Jquery (http://www.forosdelweb.com/f179/)
-   -   Cómo detectar un input con jquery (http://www.forosdelweb.com/f179/como-detectar-input-con-jquery-637991/)

Gerifaltus 26/10/2008 10:11

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

venkman 26/10/2008 13:53

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

Gerifaltus 26/10/2008 14:13

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

Gerifaltus 31/10/2008 20:18

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.

venkman 01/11/2008 03:15

Respuesta: Cómo detectar un input con jquery
 
Me alegro :)


La zona horaria es GMT -6. Ahora son las 07:10.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.