页面上的一个按钮不会调用后面的代码,其他按钮可以工作

本文关键字:按钮 代码 其他 工作 调用 一个 | 更新日期: 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事件。