Предотвратить публикацию ссылки LinkButton OnClientClick не работает. Почему?

javascript asp.net

21496 просмотра

4 ответа

Я знаю, что есть множество ответов на эту тему, но я просто не могу заставить это работать.

Мне нужно, чтобы кнопка ссылки не отправлялась назад, а следующий код не работает. Код определенно попал во все необходимые места.

Определение кнопки ссылки:

  <asp:LinkButton ID="NavHelp" OnClientClick="showConfirm(event);" OnClick="NavHelp_Click" ToolTip="Help" runat="server"></asp:LinkButton>

Функция Javascript (определенно ударил)

function showConfirm(event) {
  event.stopPropagation();
  return false;
}

Однако после showConfirmвозврата false кнопка ссылки все еще отправляет обратно в NavHelpметод на стороне сервера .

В качестве примечания, я также поставил точку останова в __doPostbackметоде, сгенерированном .NET, и он получает удар после showConfirmвозврата false.

Кто-нибудь может пролить свет на это?

Автор: Dan Cook Источник Размещён: 13.11.2019 11:46

Ответы (4)


6 плюса

Решение

Правильно, разобрался. Мне нужно было включить оператор возврата в атрибут OnClientClick:

OnClientClick="return showConfirm(event);"

НЕ

OnClientClick="showConfirm(event);"
Автор: Dan Cook Размещён: 23.05.2013 10:04

1 плюс

кстати, вы можете использовать свой оригинальный код, но вместо того, чтобы использовать, event.stopPropagation()вы можете использоватьevent.preventDefault()

так что ваш код будет

<asp:LinkButton ID="NavHelp" OnClientClick="showConfirm(event);" OnClick="NavHelp_Click" ToolTip="Help" runat="server"></asp:LinkButton>

function showConfirm(event) {
  event.preventDefault();
  return false;
}

прочитайте больше о event.preventDefault () и event.stopPropagation () здесь: http://davidwalsh.name/javascript-events

по сути, protectDefault не позволяет элементу выполнить его действие dfault, то есть просмотр ссылки или отправку формы, в то время как остановка позволяет разрешить действие dfault, НО не сообщает никаким родительским элементам о том, что оно произошло.

я создал небольшой jsfiddle: http://jsfiddle.net/XgSXr/, который показывает вам режим предотвращения по умолчанию, это должно позволить вам вставить свою собственную логику javascript, отобразить модалы и т. д., прежде чем успешно нажимать по ссылке.

Автор: kolin Размещён: 23.05.2013 01:30

1 плюс

Это работает:

<asp:LinkButton ID="NavHelp" ClientIDMode="Static" OnClientClick="showConfirm(event);" OnClick="NavHelp_Click" ToolTip="Help" runat="server"></asp:LinkButton>
<script>
    $("#NavHelp").click(function(event) {
        if (showConfirm()) {
            event.stopPropagation();
            event.preventDefault();
            return false;
        }
        return true;
    });
</script>
Автор: Pavlo Neyman Размещён: 06.02.2014 09:44

0 плюса

Добавить оператор возврата в onClientClick Javascript Event

OnClientClick="return showConfirm(event);"

Поэтому, когда showConfirm возвращает false, запрос не будет передан на сервер и страница не будет отправлена ​​обратно.

Автор: Pankaj Agarwal Размещён: 23.05.2013 01:37
Вопросы из категории :
32x32