JavaScript 'onclick' event 'return' функциональность ключевого слова - PullRequest
46 голосов
/ 19 октября 2011

Я действительно новичок в javascript и наткнулся на ключевое слово return. Какова разница между этими двумя утверждениями?

<input type="checkbox" onclick="doAlert()" />

против

<input type="checkbox" onclick="return doAlert();" />

По сути, оба возвращали одинаковые результаты и вызывали функцию, но есть ли что-то еще? Любая помощь с благодарностью :). Спасибо!

Ответы [ 3 ]

40 голосов
/ 19 октября 2011

Некоторые html-элементы имеют события JS, которые ведут себя по-разному при возврате true / false. Например:

<input type='submit' value='Click Me' onSubmit='ValidateForm();'>

... против ...

<input type='submit' value='Click Me' onSubmit='return ValidateForm();'>

Во втором случае, если функция ValidateForm вернула false, форма не будет отправлена, в первом случае, даже если функция вернет false, форма все равно будет отправлена.

Я думаю, что в этом сценарии вы можете увидеть различие между использованием ключевого слова return и отсутствием.

ОБНОВЛЕНО Для упрощения, если вы используете ключевое слово return, вы передаете значение обратно в функцию, которая вызвала onsubmit. Без этого вы просто вызываете функцию, которую вы называете в обработчике событий, и ничего не возвращаете.

38 голосов
/ 19 октября 2011

Возврат false из функции, отменяет эффект проверки.Поскольку родной из функций, которые написаны жестко закодированными в свойства html (он стал какой-то новой локальной функцией), написание html без слова «return» просто запустит функцию и потеряет возвращаемое значение, как если бы вы написали:

function doAlert() {
   if(some_condition)
     return false;
   else
     return true;
}
function some_local_function() {
   doAlert();
}

Функция some_local_function не возвращает никакого значения, хотя doAlert возвращает.

Когда вы пишете «return», это похоже на то, что вы написали вторую функцию следующим образом:

function some_local_function() {
   return doAlert();
}

, который сохраняет возвращаемое значение doAlert, каким бы оно ни было.Если это правда - действие будет выполнено (флажок будет установлен), в противном случае - оно будет отменено.

Вы можете увидеть живой пример здесь: http://jsfiddle.net/RaBfM/1/

0 голосов
/ 22 января 2018

добавление return к функции (), отключает поведение браузера по умолчанию, отключает задание submit. Это означает, что он будет держать вас на той же странице, если функция вернет false, и вы сможете снова ввести значение в поле.

Если вы не используете return с функцией (), то функция submit выполнит свою работу, она будет перенаправлена ​​на следующую указанную страницу, не заботясь о возвращенном результате, независимо от того, было ли оно истинным или ложным.

...