2014-01-31 2 views
0

Мне интересно, что именно делает заявление return false; в этом латинском переводчике? Удалив его, я вижу, что страница, похоже, автоматически обновляется (сразу вытирает «перевод», а не оставляет ее), но я не понимаю эту механику. Что происходит? Я вроде не думаю, HTML или JS, необходимо ответить на мой вопрос, но дайте мне знать, если я ошибаюсь, и я вставить его вПочему «вернуть ложь»; заявление в мероприятии отправки?

The JQuery:.

$(function() { 
    $("form#translator").submit(function() { 
     var englishWord = $("input#word").val(); 
     var translatedWord = englishToPigLatin(englishWord); 

     $("#english").append(englishWord); 
     $("#pig-latin").append(translatedWord); 

     $("#translation").show(); 
     return false; 
    }); 
}); 

Спасибо!

+0

Это указывает на то, что браузер должен отменить 'submit()' и не отправлять данные на сервер. –

+0

'return: false' в функции, обрабатывающей событие, приводит к действию по умолчанию, которое это событие вызвало (в данном случае: отправление формы) прерывание. Более «современный» способ сделать это - event.preventDefault. – CBroe

+0

Ох ... поэтому часть функции submit() обновляет форму после ее завершения? –

ответ

4

Из .submit documentation (курсив мой):

Теперь, когда форма была отправлена , сообщение будет предупреждено. Это происходит до фактического представления, поэтому мы можем отменить действие отправки по телефону .preventDefault() по объекту события или путем возврата false от нашего обработчика.

Таким образом, возврат false предотвращает действие по умолчанию (в этом случае представление формы), но также останавливает распространение события. Это эквивалентно вызову event.preventDefault()иevent.stopPropagation().


Это кажется, что вы не знаете, как формы обрабатываются:

Когда форма отправлена, браузер делает GET или запрос POST к URL, представленной в атрибуте формы в action, т.е. он загрузит этот URL-адрес. Если атрибут action не указан, запрос будет отправлен на текущий URL-адрес, который эффективно перезагружает страницу (но также отправляет данные на сервер).

Для получения дополнительной информации см. MDN - Sending and retrieving form data.

2

Выполняется функция, когда форма submitted. Возвращая false, вы фактически отключите отправку формы, чтобы страница не передавалась на сервер.

Если вы отправляете сервер, сервер вернет новую страницу, и ваши изменения в javascript действительно исчезнут, пока вы еще не нажмете кнопку отправки.

В качестве альтернативы вы можете использовать это вместо того, чтобы вернуться ложным:

your_form.submit(function(e){ 
    e.preventDefault(); 
}); 

Versus:

your_form.submit(function(e){ 
    return false; 
}); 
0

«return false», форма будет выполнена, но ваша страница не будет перезагружать/обновляться.

Смежные вопросы