页面上的每个按钮除了一个按钮外都有效。单击时,将显示确认框。当确认为真时,它什么都不做。其他按钮在页面上工作,所以我不确定为什么后面的代码没有被调用。
更新:我需要确认此人想要按下按钮,这就是我拥有“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;" />
感谢您提供任何帮助。
答案 0 :(得分:3)
这是一个简单快速的解决方法,如下所述。
您需要将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客户端处理是调用此方法__doPostBack('btn1','')
,ASP.Net在执行clientclick
代码后执行。
因此,如果您返回clientclick
,则ASP.Net方法不会执行,也不会发回。
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
。因此,更改此属性可能是您的另一个选项,但如果没有,那么只需使用我提供的原始修复。
答案 1 :(得分:-1)
看起来你的第一个按钮有OnClientClick =“return confirmDeclineServices();”,它应该在客户端浏览器上运行一些脚本。根据{{3}},该属性也可以选择标准的OnClick事件。