迷惑是否返回虚假;需要与否

时间:2011-04-17 18:49:43

标签: jquery validation

我是jQuery的新手,我在表单上写了一些验证逻辑。在这个精彩社区的帮助下,我能够理解如何使用.ajax()发布表单并阻止回发。

我正在使用button.click()事件来执行此操作,我知道何时需要保留表单,我必须放置return false;并理解原因。例如:

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

我理解为什么在这种情况下返回false非常重要。但是在我的提交按钮单击事件的最后,还有一个返回false,如下所示:

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

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

我问的原因是我还在编写一个函数来将标签颜色更改为.blur()上的白色。像这样:

$(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?       
    });

});

谢谢!

2 个答案:

答案 0 :(得分:6)

return false用于jQuery事件回调,以阻止<​​strong>事件传播或事件冒泡

如果此元素的事件链中有多个回调,则表示不会调用超过返回false的事件的任何事件。

这在您发布的情况下非常有用。默认情况下,提交按钮具有附加事件,该事件将提交其包含的表单。绑定到此提交按钮的click事件时,使用return false会阻止任何以前注册的事件发生 - 因此您的自定义click事件将被调用,并且不会提交表单。< / p>

对于大多数情况,您不需要包含return false。只有当你认为事件链中可能有另一个处理程序可以接收你正在处理的事件并以某种方式混淆你的代码时,才有必要。

额外信息:

答案 1 :(得分:2)

似乎你已经知道这一点,但只是为了确保:

在jQuery中,return false;相当于调用event.stopPropagation() event.preventDefault() 1 。因此,它有助于防止默认操作(例如提交表单)和防止事件冒泡,以避免某些其他处理程序对该事件起作用。

在您提交按钮的单击处理程序示例中,return false;具有取消提交单击按钮调用的默认操作的效果。所以除非你想要提交表单,否则它是必需的,无论你在事件处理程序中做了什么,可能不是这样。

要回答有关blur()的问题,除非有其他 return false;事件处理程序,否则不应blur 您希望停止对此事件采取行动,您希望阻止默认的blur操作。