根据用户按钮选择返回对onClientClick的响应

时间:2013-10-25 10:53:17

标签: c# javascript jquery asp.net

我有一个像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响应,然后用户甚至有机会选择确定或取消。谢谢你的帮助

1 个答案:

答案 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