禁用链接按钮仍然在asp.net webform中提交

时间:2010-12-15 15:02:30

标签: javascript asp.net

我正在尝试禁用链接按钮,以防止用户多次提交。

我在这里看到过很多像这样的问题,大多数人建议使用以下javascript:

button.disabled = truebutton.disabled = 'disabled'

确实禁用了按钮(按钮显示为灰色),但问题是它仍然可以点击,仍然提交!!

这是我的精简代码:

function ValidateButton(button){
// some other code
button.disabled = true;
button.value = 'Processing...';
}

<asp:LinkButton Text="Submit" ID="btnSubmit" runat="server" onclick="btnSubmitRow_Click" OnClientClick="return ValidateButton(this);"/>

  1. 为什么按钮仍然可以点击,并在被禁用后提交?
  2. 按钮文字仍然是“提交”而不是“处理...”,为什么?

6 个答案:

答案 0 :(得分:6)

LinkButton控件呈现为a元素,并且没有disabled属性或value属性。

您所使用的代码适用于Button控件,该控件呈现为input type="button"input type="submit",但不适用于链接。要使其看起来禁用,您可以更改它的颜色,并且为了防止它提交,您将从客户端单击事件处理程序返回false。使用innerHTML属性更改链接的文本。

答案 1 :(得分:2)

我遇到了同样的问题,禁用链接按钮并不会阻止它发送请求,您应该在禁用它时从链接按钮中删除该事件。
有时我用一个带有相同文字的标签替换了链接按钮。

答案 2 :(得分:1)

当您决定禁用该按钮时,为防止回发,请在return false功能中添加ValidateButton

答案 3 :(得分:0)

将其添加到ValidateButton

button.onclick = function(){return false;};

答案 4 :(得分:0)

如果按钮仍然可以点击且值永远不会更改为“正在处理...”那么您确定要正确定位按钮吗?

您可以尝试使用ID来定位按钮:

document.getElementById("btnSubmit ").disabled = true;
document.getElementById("btnSubmit ").value = 'Processing...';

然后你肯定知道你正在操纵正确的元素。

您可以替换脚本更改表单的提交事件。将onSubmit()函数设置为return false;之类的东西 - 这样用户就无法将光标放入表单字段并通过按Enter键提交它,无论如何都会绕过该按钮。

答案 5 :(得分:0)

您可以照常禁用LinkBut​​ton(客户端或服务器端),如果未禁用按钮/链接,则必须修改JavaScript才能正常工作。所以在你的情况下:

<asp:LinkButton Text="Submit" ID="btnSubmit" runat="server" OnClientClick="return ValidateButton(this);"></asp:LinkButton>

在您的客户端代码中:

function ValidateButton(button){
    if (!button.disabled) {
        // do work here
    }
}

如果客户端onClick函数返回false,则回发将永远不会发生。

相关问题