2017-03-01 46 views
0

使用引導模式彈出我想顯示一個彈出窗口通知用戶任務正在運行。在此期間,模式窗口可能不被封閉的,所以我說的屬性:Bootstrap模式更改鍵盤屬性不關閉(重新啓用esc)

{ 
    backdrop: 'static', 
    keyboard: false 
} 

當AJAX請求完成時,模態的內容被改變。此外,我可以重新啓用改變屬性值的背景行爲。我也想改變鍵盤行爲,但只是改變屬性纔會關閉並再次顯示彈出窗口。

有沒有辦法重新啓用esc鍵,而無需關閉模式彈出?

參見:http://jsfiddle.net/as3x6Lfp/1/

回答

0

我花了一些時間,但只是發現這個問題的相關部分答案。 Change Bootstrap modal option once it already exists

我將屬性更改爲所需的值。之後,我稱之爲'逃生'功能。

下面的代碼

$(".modal").data("bs.model").options.keyboard = true; 
$(".modal").data("bs.modal").options.backdrop = true; 
$(".modal").data("bs.modal").escape(); 

更新的jsfiddle:http://jsfiddle.net/as3x6Lfp/2/

正如你可能會發現。它會重新啓用esc-key,但一旦顯示模式彈出窗口,它就不能用於禁用esc-key。這對我所期望的解決方案來說不成問題。

0

我想你需要完全破壞和renable這將需要隱藏,然後顯示模式...

$('#myModal').on('shown.bs.modal', function() { 

    var progress = setInterval(function() { 
    var $bar = $('.bar'); 

    if ($bar.width()==500) { 

     // complete! 

     // reset progree bar 
     clearInterval(progress); 
     $('.progress').removeClass('active'); 
     $bar.width(0); 

     // update modal 
     $('#myModal .modal-body').html('Task complete. You can now close the modal.'); 
     $('#myModal .hide,#myModal .in').toggleClass('hide in'); 

     // re-enable modal allowing close 
     $('#myModal').data('reenable',true); 
     $('#myModal').modal('hide'); 
    } else { 

     // perform processing logic (ajax) here 
     $bar.width($bar.width()+100); 
    } 

    $bar.text($bar.width()/5 + "%"); 
    }, 600); 

}); 

$('#myModal').on('hidden.bs.modal', function() { 
    // reset modal 
    if ($('#myModal').data('reenable')) { 
     $(this).removeData(); 
     $('#myModal').modal({ 
      show: true 
     }); 
    } 
}); 

http://www.codeply.com/go/NCsThOAy3V

+0

我不想隱藏當前模式和顯示一個新的。我不希望用戶體驗新的彈出窗口。只需更改消息。 你應該看到第一條消息就像加載。下一條消息是用戶需要採取某種行動的實際消息。 – Dexter

+0

是的,我更新了我的示例:http://www.codeply.com/go/cFSzteMbxS – ZimSystem