从今天起,我在ASPX LinkButton上的Telerik RadConfirm弹出消息遇到了一些麻烦。首次单击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("ctl00$MC$docSaveBtn", "", true, "", "", 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("ctl00$MC$uc_RisultatoRicercaGara$rgResults$ctl00$ctl08$imgDuplica", "", true, "", "", false, false))">
null
或只是return radconfirm('');
不能在Chrome 73上使用LinkButton。其他控件可以工作,所有控件都可以在不同的浏览器上运行。
从内部创建事件然后PostBack的修复程序不能很好地工作。我需要将HREF传递给事件,并且在我的项目中已经拥有的每个radconfirm上创建一个事件是不可行的。
我不确定这是如何起作用的。 LinkButton打开Confirm Dialog,然后,后面的PostBack将中断操作。为了防止PostBack,在ClientClick事件处理程序中尝试调用radconfirm()
方法而不是返回它,然后在执行方法后调用return false;
。查看Calling RadConfirm via JavaScript文章,了解使用RadConfirm的示例。
此外,用于radconfirm的callBackFunction,“event”是无效的,因为有一个名为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)
{
}