我有一个按钮,并在后面的代码中有btnSubmit.Click的回发功能。
<asp:Button runat="server" ID="btnSubmit" Text="Submit" UseSubmitBehavior="true" OnClientClick="ajaxCall(); return false;" />
现在,我想做一个事前操作,它将调用ajax进行一些计算,并有一个确认框允许用户点击“确定” - 恢复原始按钮的功能做到回发,或者“取消“ - 只需取消回发。
<script type="text/javascript" language="javascript">
function ajaxCall() {
$.ajax({
dataType: 'json',
type: 'GET',
contentType: "application/json; charset=utf-8",
url: "ODS.aspx/ClientCall",
success: function (msg) {
alert(msg);
}, error: function (data) {
alert(data);
}
});
}
</script>
我一直只是触发确认框,但“OK”无效,或者回发将通过ajax。我知道必须有一个聪明的方法来做到这一点,打断正常按钮提交回发行为,但不想引入更多控件,像hiddenbutton这样的东西,感觉就像非常hacky方式。有什么想法吗?
答案 0 :(得分:0)
我不知道天气它会解决你的问题,但你可以使用ajaxStart和ajaxStop方法,在那些方法中你可以编写你的确认逻辑。
答案 1 :(得分:0)
ajaxStart和ajaxStop以及jquery .after()的另一个选项。
如果您使用ASP:LinkButton,您可以将href属性存储在变量中,当客户端单击时将其删除,当您需要它执行时只执行eval([HREFVariable])。
这是来自记忆,但我会在一分钟内查看:
$('a.whatever').on("click", function(){
e.preventDefault();//stop the post back
var defaultAction = $(this).prop("href");
//do stuff
//you are ready now
eval(defaultAction);
});
这是有效的,因为ASP.Net在href中做回发,如javascript:__ doPostBack(...);
所以这只是调用你要做的功能。
编辑2 因为您想要使用asp:按钮
这样的事情应该有效
$('a.whatever').on("click", function(){
e.preventDefault();//stop the post back
var id = $(this).prop('id');
//do stuff
//you are ready now
__doPostBack(id, '');
});
我猜这个部分。这应该发回正确的帖子,但我还没有测试过。