Радиокнопка ASP и окно JS подтверждают проблему - PullRequest
0 голосов
/ 20 февраля 2020

У меня возникла проблема при попытке открыть окно подтверждения выбора радиокнопки. Использование обычной кнопки asp не является проблемой, но, к сожалению, я сейчас привязан к этим переключателям. Некоторый код отсутствует для краткости.

Front-End

<asp:Repeater ID="rptrWishLists" runat="server">

// reduced for brevity...

<div class="btn-group btn-group-toggle">
   <label class="btn btn-gray-600 btn-sm" title="Private" id="lblPrivate" runat="server">
      <asp:RadioButton GroupName="options" ID="chkPrivate" runat="server" AutoPostBack="true" OnCheckedChanged="radioButton_CheckedChanged" />
      <i class="far fa-eye-slash"></i>
   </label>
   <label class="btn btn-gray-600 btn-sm" title="Public" id="lblPublic" runat="server">
      <asp:RadioButton GroupName="options" ID="chkPublic" runat="server" AutoPostBack="true" OnCheckedChanged="radioButton_CheckedChanged" />
      <i class="far fa-eye"></i>
   </label>
</div>

</asp:Repeater>

Без какого-либо другого кода JS прямо сейчас, каждый RadioButton отправит сообщение, когда его измененные значения будут работать без сбоев.

Чтобы попытаться заставить работать окно подтверждения, я попробовал несколько различных решений.

1) В результате появляется окно подтверждения, но не имеет значения, вы нажимаете "Okay" или "Canel" - это не вызывает обратную передачу.

// via code behind
chkPrivate.Attributes.Add("onclick", "return window.confirm('blah blah blah');")

2) Страницы возвращаются назад ДО того, как откроется окно ... пробовал как с, так и без protectDefault ()

// via JS
$('[id$=chkPrivate').on('click', function(e) {
    if (this.checked) {
        event.preventDefault();
        return window.confirm('You are about to make this list \'Private\' which will restrict the visibility to only this user account. The list can be made \'Public\' again at any time. Do you want to continue?');
    }
});

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

...