Запутались ли возвращать false;нужен или нет - PullRequest
5 голосов
/ 17 апреля 2011

Я очень плохо знаком с 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 ]

6 голосов
/ 17 апреля 2011

return false используется в обратных вызовах событий jQuery для остановки распространения событий или всплывающих событий .

Если в цепочке событий для этого элемента имеется более одного обратного вызова, это означает, что не будет вызвано ни одно из событий после события, которое возвращает false.

Это полезно в ситуациях, подобных той, которую вы опубликовали. По умолчанию кнопка отправки имеет прикрепленное событие, которое отправит содержащую ее форму. При привязке к событию click этой кнопки отправки использование return false предотвратит возникновение ранее зарегистрированных событий, поэтому будет вызвано ваше пользовательское событие click и форма не будет отправлена.

Для большинства ситуаций вам не нужно включать return false. Это необходимо, только если вы думаете, что в цепочке событий может быть другой обработчик, который может получить событие, с которым вы имеете дело, и каким-то образом перепутать ваш код.

Дополнительная информация:

2 голосов
/ 17 апреля 2011

Кажется, вы уже знаете это, но только для того, чтобы убедиться:

В jQuery return false; эквивалентно вызову event.stopPropagation() и event.preventDefault() 1 .Таким образом, это полезно в предотвращении действия по умолчанию (такого как отправка формы) и в предотвращении всплывающего события, чтобы избежать какого-либо другого обработчика, воздействующего на это событие.

В вашем примере обработчик щелчка для кнопки отправкиreturn false; приводит к отмене действия по умолчанию, при котором вызывается нажатие кнопки.Так что это требуется, если вы не хотите отправлять форму независимо от того, что вы делаете в обработчике событий, что, скорее всего, НЕ так.

Чтобы ответить на ваш вопрос о blur()Вы не должны return false; , если не существует какого-либо другого blur обработчика событий, который вы хотите остановить, чтобы не воздействовать на это событие или , если естьblur действие по умолчанию, которое вы хотите предотвратить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...