Вопрос:

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

javascript asp.net

21496 просмотра

4 ответа

861 Репутация автора

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

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

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

  <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 Источник Размещён: 23.05.2013 09:44

Ответы (4)


6 плюса

861 Репутация автора

Решение

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

OnClientClick="return showConfirm(event);"

НЕ

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

1 плюс

1759 Репутация автора

кстати, вы можете использовать свой оригинальный код, но вместо того, чтобы использовать, 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

0 плюса

7135 Репутация автора

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

OnClientClick="return showConfirm(event);"

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

Автор: Pankaj Agarwal Размещён: 23.05.2013 01:37

1 плюс

6167 Репутация автора

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

<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
Вопросы из категории :
32x32