Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: |Miguel| en 26 Octubre 2013, 20:54 pm



Título: no consigo que funcionen los eventos jquery
Publicado por: |Miguel| en 26 Octubre 2013, 20:54 pm
hola a todos ¿qué tal?

tengo un problemilla con el evento keyup de jquery: no es llamado si quiera... :S
este es mi formulario:
Código
  1. <form method="post" id="search-form">
  2.    Search for:
  3.    <input id="searched-word" name="searched-word" />
  4.    <input id="btnSearch" class="btnSearch" name="btnSearch" type="button" value="Search" class="btnSearch"
  5.           onclick="javascript:buscar($('#searched-word').val());" />
  6. </form>
  7.  

y aquí el archivo js (resalto en negrita la parte que no me funciona):
Código
  1. $(document).ready(function() {  
  2.    $('.menu li a').click(function() {
  3.  
  4.         /* Muestro una animación de carga */
  5.        ($('.content')).addClass("loading");
  6.        ($('.modal')).css('display', 'block');
  7.  
  8.        /* Cambio la pestaña activa */
  9.        $('.menu li a').removeClass('active');
  10.        $(this).addClass('active');
  11.  
  12.        /* Y cargo en el contenedor la página que se esté pìdiendo */
  13.        $('#contenido').load($(this).attr('destino'));
  14.  
  15.        /* Quito la animación */
  16.        ($('.modal')).css('display', 'none');
  17.        $('.content').removeClass("loading");
  18.  
  19.        return false;
  20.    });
  21.  
  22.    [b]$("#searched-word").keyup(function( event ) {
  23.        alert( event );
  24.    }).keydown(function( event ) {
  25.        if ( event.which == 13 ) {
  26.            event.preventDefault();
  27.        }
  28.    });[/b]
  29.  
  30. });
  31.  
  32.  
  33. function buscar(palabra){
  34.    if(palabra.length > 0){
  35.        var parametros = {
  36.            "searched-word" : $('#searched-word').val()
  37.        };
  38.        $.ajax({
  39.            data:  parametros,
  40.            url:   'search.php',
  41.            type:  'post',
  42.            beforeSend: function () {
  43.                $("#resultado").html("Searching. Please, wait.");
  44.            },
  45.            success:  function (response) {
  46.                $("#resultado").html(response);
  47.            }
  48.        });
  49.  
  50.    }
  51.    else{
  52.        alert('You must write something to search for!');
  53.    }
  54. }
  55.  

Básicamente lo que quiero es controlar que si se pulsa enter no se haga submit del formulario para que no se recargue la página, porque estoy cargando los resultados por ajax en la misma página...
a ver si me podéis echar un cable.

he probado llamando al evento por id ($("#searched-word").keyup(function( event )) y por clase ($(".searched-word").keyup(function( event )) pero nada, ni si quiera se llama al evento.

por cierto, ya que estoy, el evento de arriba (el del click del menú) sólo me funciona si lo pongo como una clase, si lo pongo por id tp me funcionaba...

Gracias


Título: Re: no consigo que funcionen los eventos jquery
Publicado por: #!drvy en 27 Octubre 2013, 19:29 pm
El código tal cual esta debe funcionar. Pero si generas ese formulario por ajax seguramente no funcionara por el tema de DOM cache.
Tienes que hacerlo de otra forma..

Código
  1. $("body").on('keyup','#searched-word',function(event){
  2. alert(event);
  3. }).on('keydown','#searched-word',function(event){
  4. if (event.which == 13) {
  5. event.preventDefault();
  6. }
  7. });

Citar
por cierto, ya que estoy, el evento de arriba (el del click del menú) sólo me funciona si lo pongo como una clase, si lo pongo por id tp me funcionaba...

Lo mismo, si lo generas por ajax usa on sobre el body y indica el elemento tal y como se muestra en el código que te deje.

Saludos


Título: Re: no consigo que funcionen los eventos jquery
Publicado por: |Miguel| en 27 Octubre 2013, 20:10 pm
Perfecto @drvymonkey, muchas gracias! :)