当您通过 jQuery 将客户端单击事件附加到 ASP.NET 按钮时,您是否会失去进行回发的能力?我只需要在服务器端的事情发生之前做一些 jQuery,它似乎会中断这个过程。
$('[id$="btnDisableAlarms"]').click(function () {
var commentValue = $('[id$="txtComment"]').val();
if (commentValue == "") {
// add red border (CSS)
$('[id$="txtComment"]').addClass("redCommentError");
}
return;
});
该按钮已连接到单击事件,但浏览器不会移动。
btnDisableAlarms.Click+=new EventHandler(btnDisableAlarms_Click);
public void btnDisableAlarms_Click(object sender, EventArgs e)
{
Response.Write("Still able to manage a postback from server");
}
最佳答案
问题是您的 jQuery 单击处理程序覆盖了 ASP 分配给按钮的单击处理程序。你可以这样做:
$('[id$="btnDisableAlarms"]').each(function (index, button) {
var oldClickHandler = button.onclick;
$(button).click(function () {
// Do your stuff
oldClickHandler();
});
});
这可能不是缓存旧点击处理程序的正确语法,但它与此类似。
编辑:实际上,保留上下文和点击事件会更安全,例如:
$('[id$="btnDisableAlarms"]').each(function (index, button) {
var oldClickHandler = button.onclick;
$(button).click(function (clickEvent) {
// Do your stuff
oldClickHandler.call(button, clickEvent);
});
});
这确保了如果旧的点击处理程序使用 this
或尝试访问触发它的点击事件,它仍然可以正常工作。
关于jquery - ASP.NET 按钮单击,在服务器控件上使用 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6999392/