Telerik "radconfirm" не поднимает href, когда нажимает "OK" на Chrome - PullRequest
0 голосов
/ 26 марта 2019

С сегодняшнего дня у меня возникли проблемы с всплывающим сообщением Telerik RadConfirm на ASPX LinkButton.После первого нажатия на LinkButton появляется сообщение, и если я нажимаю «ОК», ничего не происходит, и сообщения об ошибках не отображаются в консоли JS браузера.Если я снова нажму на LinkButton, событие PostBack начнется так, как должно было произойти при первом нажатии.

Такое поведение, по-видимому, существует только в Chrome.Firefox, Edge и Opera не затрагиваются.Эта проблема появилась только с сегодняшнего дня, и на каждом веб-сайте, который мы в сети, поведение одинаковое.

Это пример.Обратите внимание, что каждый фрагмент кода, который написан с одинаковой областью действия, демонстрирует одинаковое поведение.

<asp:LinkButton ID="docSaveBtn" runat="server" Text="Save" 
SkinID="linkButton_blue" OnClick="docSaveBtn_Click" 
OnClientClick="return radconfirm('Are you sure?', event, null ,null, null, '');" />

На странице отображаемый HTML-код выглядит следующим образом:

<a onclick="return radconfirm('Are you sure?', event, null ,null, null, '');" 
id="MC_docSaveBtn" class="linkButton_blue" aria-disabled="false" 
href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$MC$docSaveBtn&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, true))">Save</a>

Обновление 1

Запись null вместо event устраняет проблему на других элементах управления ASPX, таких как ImageButton.Просто, чтобы объяснить это, вот пример:

<asp:ImageButton ID="imgDuplica" runat="server" 
ImageUrl="~/App_Themes/AQP.v.1.0.0.1/Images/16x16/documenti.png" 
SkinID="documents_image_small" OnClick="imgDuplica_Click" ToolTip="Duplica Gara"
OnClientClick="return radconfirm('Procedere alla duplicazione della gara?', null, null, null, null, '');"  />

Опять же, рендеринг HTML выглядит следующим образом:

<input type="image" name="ctl00$MC$uc_RisultatoRicercaGara$rgResults$ctl00$ctl08$imgDuplica" 
id="ctl00_MC_uc_RisultatoRicercaGara_rgResults_ctl00_ctl08_imgDuplica" title="Duplica Gara" 
src="../../App_Themes/AQP.v.1.0.0.1/Images/16x16/documenti.png" 
onclick="return radconfirm('Procedere alla duplicazione della gara?', null, null, null, null, '');WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$MC$uc_RisultatoRicercaGara$rgResults$ctl00$ctl08$imgDuplica&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))">

null или просто return radconfirm(''); не работает на LinkButtonв Chrome 73. Другие элементы управления работают, и все элементы управления работают в разных браузерах.

Исправление для создания события, а затем PostBack изнутри, не работает должным образом.Мне нужно передать HREF событию, и невозможно создать событие для каждого Radconfirm, который у меня уже есть в моем проекте.

1 Ответ

2 голосов
/ 27 марта 2019

Я не уверен, как это сработало. LinkButton открывает диалог подтверждения, однако последующий PostBack прервет действия. Чтобы предотвратить PostBack, в обработчике событий ClientClick попробуйте вызвать метод radconfirm() вместо его возврата, затем return false; после выполнения метода. Ознакомьтесь со статьей Calling RadConfirm через JavaScript , чтобы увидеть пример использования RadConfirm.

Кроме того, callBackFunction, " событие ", которое используется для radconfirm, недопустимо, поскольку существует встроенный метод с именем Window.event () и будет конфликтовать с ним .

Попробуйте изменить callBackFunction на что-то другое, например: eventFn, myEvent, в основном на все, что не конфликтует с существующими / встроенными функциями.

Вот пример правильного подхода, который вы можете попробовать:

HTML-разметка и на стороне клиента

<script type="text/javascript">
    function eventFn(args) {
        if (args)
            __doPostBack('<%= docSaveBtn.ClientID %>', "");
    }
</script>

<asp:LinkButton ID="docSaveBtn" runat="server" Text="Save"
    SkinID="linkButton_blue" OnClick="docSaveBtn_Click"
    OnClientClick="radconfirm('Are you sure?', eventFn, null ,null, null, ''); return false;" />

<telerik:RadWindowManager ID="RadWindowManager1" runat="server"></telerik:RadWindowManager>

C # - Сторона сервера

protected void docSaveBtn_Click(object sender, EventArgs e)
{

}
...