我有一个带有onclick和onclientclick事件的asp按钮。 onclientclick,它调用一个js函数来保存。如果保存有任何错误,我想停止onclick事件。我试过e.preventdefault(),e.stopPropogation(),返回false。似乎没什么用。继承我的代码: 按钮:
<asp:Button ID="btnAddNewAddr" runat="server" onclick="btnAddNewAddr_Click" OnClientClick="SaveLocAddress();" class="btn btn-primary"
Text="Save Address" UseSubmitBehavior="false" />
js savemethod:
function SaveLocAddress(e) {
if (validaddr) {
$.ajax({
type: "post",
async: false,
contentType: "application/json; charset=utf-8",
dataType: "JSON",
url: "/Pages/Location/Search.aspx/SaveLocationAddress",
data: "{ addrDTO: " + JSON.stringify(`addrToSave`) + "}",
success: function (xhr, ts, error) {
AlertAddrSuccess(id);
},
error: function () {
console.log('error');
AlertAddrError();
e.stopPropogation();
},
complete: function () {
if ($('#alertAddressError').text() != "")
return false;
}
});
}
}
答案 0 :(得分:0)
AJAX以异步方式运行 。所以这里发生了两件事:
SaveLocAddress
的上下文,因此return
语句不会去任何地方。这可能需要一点点重新设计。也许两个按钮?一个是asp:Button
,但被设计为不可见。另一个是普通button
,它具有您希望按钮具有的文本/样式。事件的顺序是:
click
事件。这是一种全面的处理方式,但这是WebForms。它可能是这样的:
<asp:Button ID="btnAddNewAddr" runat="server" onclick="btnAddNewAddr_Click" class="btn btn-primary invisible" UseSubmitBehavior="false" />
<input type="button" class="btn btn-primary" value="Save Address" onclick="SaveLocAddress();" />
然后,在您想要调用回发功能的JavaScript代码中,您可以执行以下操作:
$('#<%= btnAddNewAddr.ClientID %>').trigger('click');
这会触发click
上的asp:button
事件,就像用户点击它一样。