WebForms / Javascript event.stopPropagation () с href = "javascript: __ doPostBack ()" не работает - PullRequest
0 голосов
/ 14 июля 2020

У меня есть проект WebForms с настраиваемым UserControl, который создает модальное окно. В этом модальном окне есть основная и дополнительная кнопки действий, разметку которых я не могу объявить или настроить. Он динамически генерируется атрибутами UserControl. Что мне нужно сделать, так это убедиться, что событие клика клиента для этих кнопок не всплывает. Я пробовал следующие подходы, но безрезультатно.

Попытка 1: прикрепить атрибут onclick к элементу.

$('<%= string.Format("#{0} a.btn", mdlNewPerson.ClientID) %>').each(function (index, value) {
    $(this).attr("onclick", "event.stopPropagation();");
});

Попытка 2: Настроить $.on('click'); обработчик событий.

$('<%= string.Format("#{0} a.btn", mdlNewPerson.ClientID) %>').on('click', function (event) {
    event.stopPropagation();
});

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

$('#ctl05_ctl02_mdlNewPerson a.btn').length

// returns 2

Это html, который UserControls создает для эти кнопки:

<div class="modal-footer">
    <a class="btn btn-primary" href="javascript:__doPostBack('ctl05$ctl02$mdlNewPerson$ctl10','')">Save</a>
    <a class="btn btn-default" href="javascript:__doPostBack('ctl05$ctl02$mdlNewPerson$ctl11','')">Cancel</a>
</div>

Учитывая, что я не могу управлять кодом кнопки на стороне сервера, мне не повезло? Я не знаю, почему ни один из вышеперечисленных методов не работает. События щелчка по-прежнему всплывают, вызывая создание повторяющихся записей. Мне нужен только один, чтобы меня приняли.

...