我有一个像onClientClick这样的事件:
OnClientClick="return getErrors();"
- 这当然是在一个
该函数的主体是:
function getErrors() {
var errorString = "some errors";
return $('<div id="dialog-message" title="Required"><p>' + errorString + '</p></div>').dialog(
{
modal: true,
width: 700,
buttons:
{
Ok: function () {
$(this).dialog("close");
return callback_ErrorAction(0);
},
Cancel: function () {
$(this).dialog("close");
return callback_ErrorAction(1);
}
}
});
return false; //omit this and OnClientClick gets undefined response variable
}
此外,回调函数定义为:
function callback_ErrorAction(bool)
{
if (bool == 0) {
return true;
}
else if (bool == 1) {
return false;
}
}
问题是我需要OnClientClick响应基于用户响应,单击确定或取消,但当前解决方案返回onClientClick响应,然后用户甚至有机会选择确定或取消。谢谢你的帮助
答案 0 :(得分:1)
您无法通过OnClientClick
返回用户的回复,因为jQuery对话框使用callbacks。
相反,您需要始终从false
方法返回OnClientClick
,并在需要时手动触发回发:
function getErrors() {
var errorString = "some errors";
$('<div id="dialog-message" title="Required"><p>' + errorString + '</p></div>').dialog(
{
modal: true,
width: 700,
buttons:
{
Ok: function () {
// Are you sure you want to close the dialog here? It will disappear when the page refreshes anyway
$(this).dialog("close");
// Manually trigger the postback
__doPostBack('<%= btnSubmit.UniqueID %>', '');
},
Cancel: function () {
$(this).dialog("close");
// Error, do nothing as we will cancel the postback by default
}
}
});
return false;
}
有关手动调用doPostBack调用的详细信息,请参阅this question。