0

私は、ブートストラップモーダルが ajax 応答まで却下されないようにしたい、または応答が false の場合は却下されないようにしたいと考えています。
コードは次のとおりです: モーダル本体のみ:

    <div class="modal-body">    
<div class="control-group">
<div class="controls">
    <label for="sharedUser" class="control-label right">Share With:</label>
    <input type="text" name="sharedUser" id="sharedUser"  placeholder="Username to Share">
    <label class="help-block errorLabel fl width100" id="kpiNameError"></label>                                                         </div>
    </div>  </div>

モーダルで何をするかを決定するスクリプトは次のとおりです。

function shareKpi(kpiId,username){
                var shareUrl = "${createLink(action:'shareKpi',controller:'dashboard')}"
                var msg;
                jQuery.ajax({
                    type: 'POST',
                    url: shareUrl,
                    data: "kpiId="+kpiId+"&sharedUser="+username,
                    success: function(response,textStatus){
                        msg=response;
                     },
                    error:function(XMLHttpRequest,textStatus,errorThrown){}
                });
                return false;
            }

私が欲しいのは、ajax応答までモーダルが却下されないようにすることです。
実際、私でさえ質問について明確ではなく、この質問はさらに編集または提案することができます。
前もって感謝します

4

1 に答える 1

3

hide.bs.modalクローズが実行される直前に Bootstrap によってトリガーされるクローズ イベント ( ) にコールバックを追加できます。

状態を保持することで、モーダルを閉じることができるかどうかを判断できます。ユーザーがモーダルを閉じることを許可されていない場合は閉じるアイコンを非表示にし、ajax が成功した場合 (および訪問者が閉じることを許可されている場合) に表示することをお勧めします。

さらに役立つサンプルコードを次に示します。

var ajaxSucceeded = false;

function shareKpi(kpiId, username){
    var shareUrl = "${createLink(action:'shareKpi',controller:'dashboard')}",
        msg;

    jQuery.ajax({
        type: 'POST',
        url: shareUrl,
        data: "kpiId="+kpiId+"&sharedUser="+username,
        success: function(response,textStatus){
            msg = response;
            ajaxSucceeded = true;
        },
        error:function(XMLHttpRequest,textStatus,errorThrown) {
            // show error message
            ajaxSucceeded = false;
        }
    });

    return false;
}

$('#myModal').on('hide.bs.modal', function () {
    if (!ajaxSucceeded) {
        // prevent closing of modal
        return false;
    }
});
于 2013-11-14T13:47:35.667 に答える