Бутстрап модальный восстанавливает фокус кнопки на закрытии
Мне очень сложно бороться с одним эффектом, который, как мне кажется, нужен в Bootstrap, но я хочу убежать. У меня есть кнопка:
<a data-toggle="modal" data-target="#video" class="btn btn-primary btn-lg" href="#">Video<i class="pe-7s-angle-right pe-2x pe-va" style="line-height: 0.3;"></i></a>
Который открывает модальное окно с некоторым видео:
<div class="modal fade video-lightbox in" id="video" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="false" style="display: block;"><div class="modal-backdrop fade in" style="height: 442px;"></div>
Поэтому, когда я закрываю модальную, моя кнопка автоматически фокусируется. Этот эффект нужен в Bootstrap и как я могу его избежать? Я не хочу, чтобы моя кнопка была в фокусе после закрытия модального.
Ответы
Ответ 1
Разрешено это, удалив
d.trigger("focus")
в bootstrap.min.js:
a.fn.modal = b, a.fn.modal.Constructor = c, a.fn.modal.noConflict = function() {
return a.fn.modal = d, this
}, a(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', function(c) {
var d = a(this),
e = d.attr("href"),
f = a(d.attr("data-target") || e && e.replace(/.*(?=#[^\s]+$)/, "")),
g = f.data("bs.modal") ? "toggle" : a.extend({
remote: !/#/.test(e) && e
}, f.data(), d.data());
d.is("a") && c.preventDefault(), f.one("show.bs.modal", function(a) {
a.isDefaultPrevented() || f.one("hidden.bs.modal", function() {
d.is(":visible") && d.trigger("focus")
})
}), b.call(f, g, this)
})
Ответ 2
Вы можете просто написать функцию в свой файл custom.js.
$(document).ready(function() {
$('.close')on("click", function() {
$(".btn").blur();
});
});
Ответ 3
Кнопки размытия при закрытии модального режима.
$('body').on('hidden.bs.modal', '.modal', function() {
$('.btn').blur();
});
Ответ 4
По умолчанию в Bootstrap ссылка или кнопка получает фокус после закрытия модального режима. Вы можете избежать этого с помощью этого кода:
$('#mymodal').on('hidden.bs.modal', function () {
relatedTarget.blur();
});
Ответ 5
Вы можете использовать этот метод, чтобы модальный триггер потерял фокус при закрытии модального окна:
$('#myModal').on('shown.bs.modal', function (e) {
$('#modalTrigger').one('focus', function (e) {
$(this).blur();
});
});
Пример:
$(document).ready(function() {
$('#myModal').on('shown.bs.modal', function (e) {
$('#modalTrigger').one('focus', function (e) {
$(this).blur();
});
});
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="#" onclick="location.href='https://maxcdn.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css'; return false;">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js"></script>
</head>
<body>
<button id="modalTrigger" type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModal">
Open modal
</button>
<!-- The Modal -->
<div class="modal" id="myModal">
<div class="modal-dialog">
<div class="modal-content">
<!-- Modal Header -->
<div class="modal-header">
<h4 class="modal-title">Modal</h4>
<button type="button" class="close" data-dismiss="modal">×</button>
</div>
<!-- Modal footer -->
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</body>
</html>