当用户点击提交时,我需要检查两个不相关的条件,并请求每个条件的用户反馈。
我可以让一个jquery对话框工作得很好但我有时需要连续两个,然后让它完成按钮事件。
这是要点: 我有按钮
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />
然后一些Jquery检查某个条件,如果为true则会弹出一个对话框。如果对话框打开,我返回false,因此原始点击事件不会发生,但在大多数情况下我想让它通过:
$("#<%=btnSubmit.ClientID %>").click(
function() {
if (Condition) {
$('#Dialog').dialog('open');
return false;
}
return true;
}
);
我没有使用常规对话框按钮,而是使用另一个asp:按钮在代码隐藏中调用不同的OnClick事件:
$("#Dialog").dialog({
bgiframe: true,
autoOpen: false,
height: 90,
width: 450,
modal: true,
close: function() {}
<div id="Dialog">
<asp:Button ID="Button1" runat="server" Text="OK" OnClick="btnDeleteSomethingThenSubmit_Click" />
<input type="button" value="Cancel" id="btnCancelDialog" />
</div>
这一切都很棒。无论如何都有效。但是我还需要检查另一个条件,使用不同的对话框,但这次只是一个是/否标志,我不需要点击服务器端事件,所以如何让一个先弹出,等待响应并设置一个值,弹出第二个,然后转到OnClick事件?类似的东西:
$("#<%=btnSubmit.ClientID %>").click(
function() {
if (OtherCondition) {
$('#Dialog2').dialog('open');
}
if (Condition) {
$('#Dialog').dialog('open');
return false;
}
return true;
}
);
这显然不起作用。
答案 0 :(得分:1)
你能不能拥有:
$("#<%=btnSubmit.ClientID %>").click(
function() {
var success = true;
if (OtherCondition) {
$('#Dialog2').dialog('open');
success = false;
}
if (Condition) {
$('#Dialog').dialog('open');
success false;
}
return success;
}
);
基本上,捕获一个在变量中返回false
的对话框,否则返回true
并允许表单提交?
答案 1 :(得分:0)
jQuery对话框是非阻塞的,并且不像本机JavaScript对话框那样,这就是你无法做到的原因
$("#<%=btnSubmit.ClientID %>").click(function() {
if (OtherCondition) {
$('#Dialog2').dialog('open');
}
if (Condition) {
$('#Dialog').dialog('open');
return false;
}
return true;
});
您需要使用close callback,如下所示:
$("#<%=btnSubmit.ClientID %>").click(function() {
if (OtherCondition) {
$('#Dialog2').dialog('open', {
close: function() {
if (Condition) {
$('#Dialog').dialog('open', {
// Call some function here to report the status
close: function() {}
});
} else {
// Call some function here to report a different status
}
}
});
}
});