【问题标题】:How to avoid double clicking on a submit button in .NET如何避免双击.N​​ET中的提交按钮
【发布时间】:2015-12-07 00:59:52
【问题描述】:

我的 c# web 应用程序有 2 个面板。第一个面板是输入一些文本。 第二个面板仅在第一个面板通过验证并单击继续按钮后显示。 第二个面板有一个带有 4 个验证的文本框、一个下拉列表框和一个提交按钮。 如果验证良好并且用户单击了提交按钮,我希望禁用提交按钮并将其文本更改为“请稍候...”以防止用户双击它。 我是 .NET 的新手,因此非常感谢任何帮助。

protected void BTNSubmit_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
BTNSubmit.Text = "Please wait...";
BTNSubmit.Enabled = false;

DoSomething();
}
}

【问题讨论】:

  • 你测试过上面的代码吗?它失败了吗?如果是这样,错误是什么?你还尝试过什么? SO 不是一个让其他人为你工作的地方,它是一个帮助的地方。
  • 是的,我已经测试了代码,但没有达到我想要的结果。

标签: c# asp.net


【解决方案1】:

这是您需要在前端使用 javascript 和 asp.net 的 onclientclick 属性(转换为 javascript 的 onclick)捕获的东西。

一个重要的关键是,如果您的 onclientclick 返回 false,您的服务器事件将不会触发(这是您第二次点击时想要的)

var submitted=false; //javascript variable to store if we have clicked submit yet

function ClientSubmit(obj){ //obj is your button
    if(submitted) {return false;} //return false prevents server onclick from firing
    submitted=true;
    obj.value='Please Wait...';
    obj.disabled = true;
    return true;  
}

现在你下次点击时,你的javascript会看到submitted被设置为true,所以这个函数会返回false,并阻止服务器事件触发

在您的 .aspx 页面上实现此功能

<asp:Button id="myButton" runat="server" 
 onclick="BTNSubmit_Click" onclientclick="return ClientSubmit(this);"  Text="Submit"/>

【讨论】:

  • 我在javascript函数中将obj.innerHTML切换为obj.value。你可以说得更详细点吗?什么时候出现错误?
猜你喜欢
  • 2021-08-02
  • 1970-01-01
  • 2017-01-24
  • 2015-04-27
  • 2018-03-02
  • 2016-06-01
  • 1970-01-01
  • 2016-12-11
相关资源
最近更新 更多