JQuery ui datepicker конфликтует с bootstrap datepicker
Я хочу показать два месяца, используя bootstrap datepicker. После поиска в google я не могу найти, как показать несколько месяцев, используя bootstrap datepicker. Я обнаружил, что я могу использовать интерфейс JQuery для отображения нескольких месяцев.
Но проблема в том, что в моем приложении они используются для выбора даты загрузки. Когда я пытаюсь использовать JQuery UI datepicker, тогда Bootstrap datepicker переопределяет его, и я не могу видеть jQuery UI datepicker.
Не могли бы вы предложить, как заменить bootprap datepicker на JQuery UI?
Я хотел добиться этого:
http://jqueryui.com/datepicker/#multiple-calendars
Ответы
Ответ 1
Эта проблема может быть решена с помощью метода noConflict
bootstrap-datepicker
$.fn.datepicker.noConflict = function(){
$.fn.datepicker = old;
return this;
};
Вы можете просто сделать $.fn.datepicker.noConflict()
, который заменяет bootprap datepicker более старым датапиксером, который присутствовал, в данном случае пользовательский интерфейс jQuery.
Для тех, кто хочет держать обоих финалистов, вы можете сделать что-то следующее:
if (!$.fn.bootstrapDP && $.fn.datepicker && $.fn.datepicker.noConflict) {
var datepicker = $.fn.datepicker.noConflict();
$.fn.bootstrapDP = datepicker;
}
после чего вы сможете инициализировать jQuery UI datepicker с помощью метода datepicker()
и загрузочного файла с помощью bootstrapDP()
Боковое примечание. Обязательно загрузите bootprap datepicker после jquery ui, чтобы мы могли использовать его noConflict()
$(function() {
if (!$.fn.bootstrapDP && $.fn.datepicker && $.fn.datepicker.noConflict) {
var datepicker = $.fn.datepicker.noConflict();
$.fn.bootstrapDP = datepicker;
}
$("#jquery-ui-datepicker").datepicker({});
$('#bootstrap-datepicker').bootstrapDP({});
});
#left {
width: 50%;
float: left;
}
#bootstrap-datepicker {
width: 50%;
float: right;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.5.1/css/bootstrap-datepicker.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/jquery-ui.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.5.1/js/bootstrap-datepicker.min.js"></script>
<div id="left">
<p>Date:
<input type="text" id="jquery-ui-datepicker">
</p>
</div>
<div id="bootstrap-datepicker" class="input-group date">
<input type="text" class="form-control"><span class="input-group-addon"><i class="glyphicon glyphicon-th"></i></span>
</div>
Ответ 2
Я обнаружил, что z-индекс для всплывающего календаря jQueryUI был низким.
попробуйте это
#ui-datepicker-div{
z-index:350 !important;
}
Ответ 3
Чтобы расшифровать сказанное, что пользовательский интерфейс jQuery можно использовать с Bootstrap, но это может не стоить усилий. См. Это сообщение от SO:
Могу ли я одновременно использовать пользовательский интерфейс Twitter Bootstrap и jQuery?
Вы можете обнаружить, что у этого параметра datepicker есть больше возможностей, которые могли бы дать вам то, что вам нужно... Я не вижу нескольких календарей: http://eternicode.github.io/bootstrap-datepicker/
Я также считаю, что внешний вид jQuery UI может выглядеть неуместно с внешним видом и самонастройкой, хотя это только мое мнение.
Ответ 4
Вы можете использовать bootstrap и jQuery-UI вместе с почти никакой проблемой при использовании datepicker.
По крайней мере, у меня не было проблем, но у меня был jQuery-UI, а затем был применен бутстрап. Я рекомендую этот подход.
Вот jQuery-UI Реализация datepicker с несколькими месяцами.
$(function() {
$( "#datepicker" ).datepicker({
numberOfMonths: 3,
showButtonPanel: true
});
});
Теперь вот моя реализация jQueryUI:
Элемент HTML:
<input type="text" class="datepicker" value="date.format("yyyy-MM-dd")" name="date[@i]" />
JS:
$(function() {
$(".datepicker").datepicker({
dateFormat: 'yy-mm-dd',
numberOfMonths:2
});
});
Как вы можете видеть, я использую класс вместо ID, потому что на некоторых страницах я использую несколько селекторов даты.
Ответ 5
Вы можете скачать собственный скрипт jquery-ui, не включая модуль datepicker и изменив имя скрипта с jquery-ui.min.js на jqueryuinodatepicker.min.js
Ответ 6
Bootstrap Datepicker конфликтует с jquery UI datepicker. Если вы хотите использовать Bootstrap datepicker, попробуйте это
var datepicker = $.fn.datepicker.noConflict(); // return $.fn.datepicker to previously assigned value
$.fn.bootstrapDP = datepicker; // give $().bootstrapDP the bootstrap-datepicker functionality
// Call bootstrap datepicker function
$('#datepickermodel').bootstrapDP({
format: 'dd/mm/yyyy',
todayHighlight: true
});
Это работает для меня. Я надеюсь, что это сработает и для вас :)
Больше подробностей: https://bootstrap-datepicker.readthedocs.io/en/master/#no-conflict-mode
Ответ 7
Просто поместите эту строку после вызова Bootstrap datepicker
var _datepicker = jQuery.fn.datepicker;
А после вызова jQuery-ui JS
jQuery.fn.datepicker = _datepicker;
Итак, ваш звонок будет выглядеть как
<script src="/bootstrap-datepicker.js" type="text/javascript"></script>
var _datepicker = jQuery.fn.datepicker;
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
jQuery.fn.datepicker = _datepicker;