Sie sind nicht die einzige, die diese Funktion fehlt. Ich denke bootstrap ist manchmal zu "minimalistisch", die Leute dahinter haben die Idee viel sollte in der "implementation layer" gemacht werden, aber es ist nutzlos wenn die Bootstrap jQuery Plugins selbst es unmöglich machen!
Sie haben die Funktionalität selbst zu implementieren, wie dies:
in bootstrap.js
v2.1.1 modal an Linie beginnt 61.
in Modal.prototype
, fügen Sie zwei Funktionen, lock
und unlock
, so sieht es aus wie folgt aus (zeige ich hier nur den Anfang modal.prototype
, becuase es zu viel Code ist)
Modal.prototype = {
constructor: Modal
//add this function
, lock: function() {
this.options.locked = true
}
//add this function
, unlock: function() {
this.options.locked = false
}
, toggle: function() {
...
...
Then, auch in Modal.prototype, finden die Funktion hide
, und fügen Sie eine Zeile, so dass es so aussieht (wieder nur oben Versteck zeigte ist)
, hide: function (e) {
e && e.preventDefault()
var that = this
//add this line
if (that.options.locked) return
e = $.Event('hide')
...
...
Und schließlich verändern $.fn.modal.defaults
zu:
$.fn.modal.defaults = {
backdrop: true
, keyboard: true
, show: true
, locked: false //this line is added
}
Jetzt haben Sie die Funktion "Sperren/Entsperren" in Ihrem Bootstrap-Modal und verhindern, dass der Benutzer das Modal in kritischen Momenten schließt.
Beispiel:
Dies ist eine veränderte Version von "Live-Demo" von http://twitter.github.com/bootstrap/javascript.html#modals
<!-- Button to trigger modal -->
<a href="#myModal" role="button" class="btn" data-toggle="modal">Launch demo modal</a>
<!-- Modal -->
<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">Modal header</h3>
</div>
<div class="modal-body">
<p>One fine body…</p>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
<button class="btn btn-primary" onclick="$('#myModal').modal('lock');">lock</button>
<button class="btn btn-primary" onclick="$('#myModal').modal('unlock');">unLock</button>
</div>
</div>
<script type="text/javascript">
ich zwei Tasten eingefügt haben, "sperren" und "Entriegeln" - wenn sie angeklickt, sie setzen das Modal im gesperrten oder normalen Modus (die Einstellungen, mit denen es initialisiert wird)
Bearbeiten, in Ihrem Fall müssen Sie nur lock/onlock aufrufen, wenn tun Ajax:
$("myModal").modal('lock');
$.ajax({
url: url,
...
...
, success(html) {
...
...
$("#myModal").modal('unlock');
}
});
Nachdem ich diese Methode angewendet habe, scheint der Hintergrund (der graue Hintergrund) zu verschwinden. Ich muss manuell $ ('# thisModal') .modal ({background: true}); um es zu benutzen. Ist das ein Fehler oder ist dies der einzige Weg? –
@TianLoon. Habe die Antwort mit einer Benachrichtigung über die Bootstrap-Version und eine [jsfiddle] (http://jsfiddle.net/Sz7ZS/) mit Bootstrap 2.3.2 (die "populärste" 2.x-Version) aktualisiert. In der Geige erscheint der Hintergrund - vielleicht hast du ihn versehentlich auf undurchsichtig 0, weiß oder so eingestellt? – davidkonrad
DANKE SO VIEL FÜR DIESES !!!!! –