如何禁用 asp 按钮(System.Web.UI.WebControls.Button)上的回发

我有个按钮。它是服务器端的,所以我只能为登录的用户显示它,但是我想让它运行一个 javascript 函数,当它是 runat = “ server”时,它似乎总是调用回发事件。

我还有一个常规按钮(<input... >)没有在服务器上运行,它工作得很好..。

如何使这个按钮只运行 javascript 而不回发?

322886 次浏览

完成后让 javascript 返回 false。

<asp:button runat="server".... OnClientClick="myfunction(); return false;" />
YourButton.Attributes.Add("onclick", "return false");

或者

<asp:button runat="server" ... OnClientClick="return false" />

您没有说明您使用的是哪个版本的.NET 框架。

如果您使用的是 v2.0或更高版本,那么当按钮的 onclick 事件被引发时,您可以使用 OnClientClick 属性来执行 Javascript 函数。

要防止发生服务器回发,您所要做的就是从被调用的 JavaScript 函数返回 false

其他人是正确的,你需要你的回调返回 false; 然而我想补充的是,通过设置 onclick 来做这件事是一种丑陋的老方法。我建议你读读 Unobtrusive JavaScript。使用像 JQuery这样的库可以使您的生活更轻松,而且 HTML 与 javascript (以及 jQuery 的 由微软支持现在!)的耦合程度更低

考虑一下。

<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequest);
function BeginRequest(sender, e) {
e.get_postBackElement().disabled = true;


}
</script>

另外,对于已接受的答案,您可以使用 UseSubmitBehavior = “ false” MSDN

您可以使用 jquery click 操作并使用 ()函数来避免回发

<asp:button ID="btnMyButton" runat="server" Text="MyButton" />




$("#btnMyButton").click(function (e) {
// some actions here
e.preventDefault();
}

通过验证

在这个例子中,我使用了两个控件,ddltxtbox,有一个愉快的编码

 asp:ScriptManager ID="script1" runat="server" /asp:ScriptManager


asp:UpdatePanel ID="Panel1" runat="server"
ContentTemplate


// ASP BUTTON
asp:Button ID="btnSave" runat="server" Text="Save" class="btn btn-success" OnClientClick="return Valid()" OnClick="btnSave_Click"




/ContentTemplate
/asp:UpdatePanel


<script type="text/javascript">
function Valid() {


if ($("#ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").val() == 0) {
alert("Please select YOUR TEXT");
$("#ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").focus();
return false;
}


if ($("#ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").val().length == 0) {
alert("Please Type YOUR TEXT");
$("ctl00_ContentPlaceHolder1_YOUR CONTROL NAME").focus();
return false;
}
return true;
}
</script>

在我的例子中,我解决了在 onClientClick 中添加 return 的问题:

暗号

function verifyField(){
if (document.getElementById("inputId").checked == "") {
alert("Fill the field");
return false;
}
}

设计表面

<asp:Button runat="server" ID="send" Text="Send" onClientClick="return verifyField()" />

你可使用以下代码:

<asp:Button ID="Button2" runat="server"
Text="Pulsa"
OnClientClick="this.disabled=true"
UseSubmitBehavior="False"/>

如果需要提交

...
<form id="form1" runat="server" onsubmit="deshabilita()">
...
<script type="text/javascript">
function deshabilita()
{
var btn = "<%= Button1.ClientID %>";
if (confirm("Confirme postback"))
{
document.getElementById(btn).disabled = true;
return true;
}
return false;
}
</script>

NET 始终将 asp:Button作为 input type=submit生成。
如果您想要一个不做文章的按钮,但是需要对服务器端的元素进行一些控制,那么创建一个具有属性 type=buttonrunat=server的简单 HTML 输入。

如果禁用执行 OnClientClick=return false的单击操作,它不会在单击时执行任何操作,除非创建如下函数:

function btnClick() {
// do stuff
return false;
}

您可以为此使用 JQuery

<asp:Button runat="server" ID="btnID" />

而不是 JQuery

$("#btnID").click(function(e){e.preventDefault();})

只需要从

function jsFunction() {
try {
// Logic goes here
return false; // true for postback and false for not postback
} catch (e) {
alert(e.message);
return false;
}
}
<asp:button runat="server" id="btnSubmit" OnClientClick="return jsFunction()" />

JavaScript function like below.

Note*: Always use try-catch blocks and return false from catch block to prevent incorrect calculation in javaScript function.