页面上的一个按钮不会调用后面的代码,其他按钮可以工作
本文关键字:按钮 代码 其他 工作 调用 一个 | 更新日期: 2023-09-27 18:29:57
页面上的每个按钮都能工作,只有一个除外。单击时,将显示确认框。当它被证实是真的时,它什么也不做。其他按钮在页面上工作,所以我不知道为什么后面的代码没有被调用。
更新:我需要确认这个人想要按下按钮,这就是为什么我有"onclientclick"属性。
这是一个不起作用的按钮:
<asp:Button ID="btnDeclineServices" runat="server" Text="Purge Scanned Image" UseSubmitBehavior="false" CssClass="redinput" TabIndex="-1" OnClientClick="return confirmDeclineServices();" OnClick="btnDeclineServices_Click" style="cursor:pointer;"/>
这就是所谓的背后的代码
protected void btnDeclineServices_Click(object sender, EventArgs e)
{
...
}
这是onclientclick:的Javascript函数
function confirmDeclineServices() {
if (confirm('Are you sure you want this flyer set to Declined Services?')) {
return true;
} else {
return false;
}
}
当我按下按钮时,它会显示确认对话框,当我按下OK时,它什么也不做。
这是非常令人困惑的,因为这个按钮放在它旁边确实有效:
<asp:Button ID="btnEnterFlyerData" runat="server" Text="Enter Flyer Data" UseSubmitBehavior="false" TabIndex="201" OnClick="btnEnterFlyerData_Click" style="cursor:pointer;" />
谢谢你能给我的任何帮助。
这是一个简单快捷的解决方案,如下所述。
您需要将ClientClick值更改为下面给出的值。我假设当confirmDeclineServices
方法返回false时,您不想执行后面的代码。
因此,如果用户确认是,那么您就让ASP.Net中的正常处理继续进行。现在,您总是从客户端单击方法返回,然后停止与此按钮连接的所有ASP.Net客户端处理。
OnClientClick="var go = confirmDeclineServices(); if(go === false) { return false;}"
当常规的ASP.Net处理在客户端接管时,只有这样页面才会返回并执行代码隐藏。通过使用return
语句,您将停止此过程。因此,仅当您希望按钮不返回时才使用return
值。
更新1
让我更详细地解释一下。
假设您有一个标记如下的asp按钮。它最终将在您的浏览器中呈现,并在下面的第二个代码片段中显示html。我所说的ASP.Net客户端处理就是在执行clientclick
代码之后ASP.Net执行的这个方法__doPostBack('btn1','')
的调用。
因此,如果您在clientclick
中返回,那么ASP.Net方法不会执行,也不会发生post-back。
ASP.Net按钮标记
<asp:Button ID="btn1" runat="server" Text ="Button1"
UseSubmitBehavior="false" OnClientClick="var x =1;" OnClick="btn1_Click"/>
ASP.Net按钮渲染Html
<input type="button" name="btn1" value="Button1"
onclick="var x =1;__doPostBack('btn1','')" id="btn1">
如果您将UseSubmitBehavior
设置为true,那么您的原始代码应该可以工作,但您使用的似乎是UseSubmitBehavior = false
。因此,更改此属性可能是您的另一个选择,但如果不是,请使用我提供的原始修复程序。
看起来你的第一个按钮有OnClientClick="return confirmDeclineServices();",它应该在客户端浏览器上运行一些脚本。根据MSDN的说法,该属性也选择了标准的OnClick事件。