我正在尝试禁用链接按钮,以防止用户多次提交。
我在这里看到过很多像这样的问题,大多数人建议使用以下javascript:
button.disabled = true
或button.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);"/>
答案 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)
您可以照常禁用LinkButton(客户端或服务器端),如果未禁用按钮/链接,则必须修改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,则回发将永远不会发生。