【发布时间】:2010-10-15 14:05:12
【问题描述】:
我有一个 asp 按钮。它是服务器端的,所以我只能为登录的用户显示它,但我希望它运行一个 javascript 函数,它似乎在 runat="server" 时总是调用回发事件。
我还有一个常规按钮 (<input...>) 没有在服务器上运行,它工作正常...
我怎样才能让这个按钮只运行javascript而不是回发?
【问题讨论】:
标签: .net asp.net javascript ajax
我有一个 asp 按钮。它是服务器端的,所以我只能为登录的用户显示它,但我希望它运行一个 javascript 函数,它似乎在 runat="server" 时总是调用回发事件。
我还有一个常规按钮 (<input...>) 没有在服务器上运行,它工作正常...
我怎样才能让这个按钮只运行javascript而不是回发?
【问题讨论】:
标签: .net asp.net javascript ajax
完成后让您的 javascript 返回 false。
<asp:button runat="server".... OnClientClick="myfunction(); return false;" />
【讨论】:
OnClientClick="return false" 的回答确实有效。
YourButton.Attributes.Add("onclick", "return false");
或
<asp:button runat="server" ... OnClientClick="return false" />
【讨论】:
您可以使用 jquery 点击操作并使用 preventDefault() 函数来避免回发
<asp:button ID="btnMyButton" runat="server" Text="MyButton" />
$("#btnMyButton").click(function (e) {
// some actions here
e.preventDefault();
}
【讨论】:
考虑一下。
<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequest);
function BeginRequest(sender, e) {
e.get_postBackElement().disabled = true;
}
</script>
【讨论】:
其他人是正确的,您需要回调返回 false;但是我想补充一点,通过设置 onclick 来做到这一点是一种丑陋的旧方式。我建议阅读unobtrusive javascript。使用像 jQuery 这样的库可以让您的生活更轻松,并且 HTML 与您的 javascript 的耦合更少(现在还有 jQuery 的 supported by Microsoft!)
【讨论】:
ASP.NET 总是将asp:Button 生成为input type=submit。
如果您想要一个不发布帖子但需要对服务器端元素进行一些控制的按钮,请创建一个简单的 HTML 输入,其属性为 type=button 和 runat=server。
如果您禁用OnClientClick=return false 的点击操作,它不会在点击时执行任何操作,除非您创建如下函数:
function btnClick() {
// do stuff
return false;
}
【讨论】:
您没有说您使用的是哪个版本的 .NET 框架。
如果您使用的是 v2.0 或更高版本,则可以在引发按钮的 onclick 事件时使用 OnClientClick 属性执行 Javascript 函数。
为了防止发生服务器回发,您只需从调用的 JavaScript 函数返回 false。
【讨论】:
另外,对于接受的答案,您可以使用 UseSubmitBehavior="false" MSDN
【讨论】:
__doPostBack( 添加到客户端点击脚本的末尾。
就我而言,我解决了在 onClientClick 中添加返回:
function verify(){
if (document.getElementById("idName").checked == "") {
alert("Fill the field");
return false;
}
}
<asp:Button runat="server" ID="send" Text="Send" onClientClick="return verify()" />
【讨论】:
OnClick 方法。
你可以使用代码:
<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>
【讨论】:
有验证
在这个例子中我使用了两个控件,ddl 和 txtbox,祝你编码愉快
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>
【讨论】:
您可以为此使用 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 函数如下。
注意*:始终使用 try-catch 块并从 catch 块中返回 false,以防止 javaScript 函数中的错误计算。
【讨论】: