我有一个按钮:
<button id="btnSearch" runat="server" onserverclick="btnSearch_Click">Find</button>
背面的代码:
protected void btnSearch_Click(object sender, EventArgs e)
{
btnSearch.InnerText = "Clicked!";
}
我正试图停止执行。所以我构建了一个像这样的jQuery函数:
$("[id$=btnSearch]").on("click", function (e) {
$(this).html("Searching...");
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
return false;
});
但代码仍然落后于背面。我想创建一个条件,如果达到,我的按钮将不会转到后面的代码,但我似乎有困难只是首先停止它。通常e.preventDefault()有效。为什么在这种情况下不起作用?为了记录,jQuery和后端功能都已成功到达。
答案 0 :(得分:2)
我认为你的jquery没有获得该按钮的id。试试这个..
<button id="btnSearch" runat="server" onserverclick="btnSearch_Click" ClientIdMode="static">Find</button>
Jquery的:
$("#btnSearch").on("click", function (e) {
$(this).html("Searching...");
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
return false;
});
<强> EDITED 强>
只需从按钮中删除onserverclick即可。喜欢这个
<button id="btnSearch" runat="server" ClientIdMode="static">Find</button>
从你的jquery代码中激活那个事件。像这样
$("#btnSearch").on("click", function (e) {
$(this).html("Searching...");
if (condition) {
//IF TRUE
var SearchButton = document.getElementById("<%= btnSearch.ClientID %>");
SearchButton.click();
} else {
return false;
}
});
答案 1 :(得分:1)
更准确的选项涵盖其他提交可能性(作为回车键)是使用submit
处理程序
$('form').on('submit', function() {
if (condition) {
return false; // cancel submit
}
}
答案 2 :(得分:1)
我注意到你正在使用onserverclick
。
HtmlButton.OnServerClick docs说明以下内容:
当HtmlButton控件出现时,会引发ServerClick事件 点击。此事件导致从客户端到达的往返 服务器和后面。它故意与客户端不同 OnClick事件。 如果代码与a运行之间存在冲突 ServerClick事件和代码由客户端OnClick事件运行, 服务器端事件指令将覆盖客户端代码。
这可能会覆盖并阻止您的客户onclick
按预期执行。
我想创建一个条件,如果达到,我的按钮将不会转到代码 后面
为了有选择地调用代码,您可能需要删除onserverclick
,并在满足条件时手动调用__doPostBack
中的onclick
。