проблема с javascript: возврат false не работает - PullRequest
3 голосов
/ 27 апреля 2011

Привет, в моей программе есть ссылка, как показано, и при нажатии она вызывает функцию clearform, как показано:

Код HTML:

<a class="button" href="Cancel" style="left: 55%;" onclick="clearForm()">Cancel</a>

Код JavaScript:

function clearForm(){
        document.getElementById("subjectName").value = "";
        return false;
    }

return false не работает в этом коде. фактически первая строка функции выполнена успешно, но возвращение false не удалось. Я имею в виду, что страница перенаправлена ​​на URL "Отмена".

Ответы [ 5 ]

21 голосов
/ 27 апреля 2011

Измените свой код на

<a class="button" href="Cancel" onclick="return clearForm()">Cancel</a>
8 голосов
/ 27 апреля 2011

Ваша проблема в том, что вам нужно вернуть логическое значение.

Но , отбрось все это ...

  • Прикрепите ваше событие ненавязчиво ...

    element.onclick = clearForm;

  • Использовать preventDefault(). Это современный способ достижения этого.

    function clearForm(event) { event.preventDefault(); }

1 голос
/ 07 февраля 2012

Обратите внимание, что в случае ошибки или ошибки в clearForm () «return false» НЕ остановит действие привязки, и ваш браузер попытается сделать ссылку на ссылку «Отмена».Вот логика:

  1. Пользователь нажимает на привязку
  2. onClick запускает clearForm ()
  3. Ошибка в clearForm (), поэтому Javascript аварийно завершает работу и останавливает весь кодвыполнение.
  4. return false никогда не запускается, потому что Javascript уже остановлен.

Если вы полагаетесь на сторонний API JavaScript (я использовал код, предоставленный Recyclebank для создания всплывающего окна)), и сторонний API делает обновление, которое нарушает работу JavaScript, тогда у вас будут проблемы.

Следующее действие остановит ссылку в нормальных условиях и при ошибках.

<a class="button" href="javascript:;" style="left: 55%;" onclick="clearForm();return false;">Cancel</a>
1 голос
/ 27 апреля 2011
<a class="button" href="Cancel" style="left: 55%;" onclick="clearForm();return false;">Cancel</a>

должно работать

0 голосов
/ 11 ноября 2014

Имейте в виду, что некоторые расширения браузера могут мешать нормальной работе ссылок.Например, я столкнулся с ситуацией, когда у кого-то были включены AdBlock Plus и Ghostery.Щелчок по простому тегу «a» с атрибутом «onclick =« return SomeFunction (); »» (функция вернула false) заставил браузер воспринимать щелчок как переход страницы и переходил на пустую страницу, а индикатор загрузки просто сохранялсяспиннинг.Отключение этих расширений браузера решило проблему.

Включая это в качестве ответа, потому что это была первая страница, на которую я попал из Google.

...