2011-04-17 8 views
5

Soy muy nuevo en jQuery y estoy escribiendo un poco de lógica de validación en un formulario. Con la ayuda de esta maravillosa comunidad, pude entender cómo publicar mis formularios con .ajax() y evitar una devolución de datos.Confundido acerca de si el retorno es falso; es necesario o no

Estoy usando el evento button.click() para hacer esto y sé cuando necesito evitar que el formulario se publique. Tengo que poner return false; y entiendo por qué. Por ejemplo:

var name = $("input#name").val(); 
if (name == "") 
{ 
    $("label#lblName").css('color','red'); 
    $("input#name").focus(); 
    return false;  
} 

Entiendo por qué es importante devolver el mensaje falso en este caso. Pero al final de mi presente evento de clic de botón también hay una declaración falsa, así:

$(function() 
{ 
    $("#submitbutton").click(function() 
    { 
     //validate and submit form 

    return false; //WHY is this here? What purpose does it serve? 
    }); 
}); 

La razón que pido es que yo también estoy escribiendo una función para cambiar los colores de la etiqueta de nuevo a blanco sobre .difuminar(). De la misma manera:

$(function() 
{ 
    $("input#name").blur(function() 
    { 
     var name = $("input#name").val();  
     if (name == '') 
     { 
      $("label#lblName").css('color','red');  
     } 
     else 
     { 
      $("label#lblName").css('color',''); 
     } 
    //Do I need return false here? and why?  
    }); 

}); 

¡Gracias!

Respuesta

6

return false se utiliza en las devoluciones de llamada de eventos jQuery el fin de detener de propagación de eventos, o propagación de eventos.

Si hay más de una devolución de llamada en la cadena de eventos para este elemento, esto significa que ninguno de los eventos del pasado el que vuelve false se llamará.

Esto es útil en situaciones como la que publicaste. Un botón de enviar, por defecto, tiene un evento adjunto que enviará su formulario que lo contiene. Cuando se vincula al evento click del botón Enviar, el uso de return false evitará que ocurran eventos previamente registrados, por lo que se llamará a su evento personalizado click y no se enviará el formulario.

Para la mayoría de las situaciones, no necesita incluir return false. Solo es necesario si piensas que podría haber otro controlador más arriba en la cadena de eventos que podría recibir el evento con el que estás lidiando y de alguna manera mezclar tu código.

información adicional:

2

Parece que usted ya lo sabe, pero sólo para asegurarse de:

En jQuery, return false; es equivalente a llamar event.stopPropagation()yevent.preventDefault()1. Por lo tanto, es útil para evitar que la acción predeterminada (como el envío de un formulario) y evitar el burbujeo del evento evite que otro controlador actúe en ese evento.

En su ejemplo del controlador de clic para el botón de enviar, el return false; tiene el efecto de cancelar la acción predeterminada de enviar haciendo clic en el botón invoca.Por lo tanto, se requiere a menos que desee el formulario que debe enviarse independientemente de lo que haga en su evento-controlador, que probablemente NO sea el caso.

Para responder a su pregunta sobre el blur(), no debe return false; menos hay alguna otra manejadorblur caso de que desea dejar de actuar sobre este evento o hay un blur acción predeterminada que se quiero prevenir

Cuestiones relacionadas