Bootstrap 3 datepicker: 更改日期显示格式;防止选择今天日期之前的日期
Bootstrap 3 datepicker: Change date display format; Prevent date selections prior to Todays date
我第一次在酒店网站上使用 Bootstrap 日期选择器。我已经安装了它,它确实显示了它应该显示的日历。
但是,日期一旦被选中,就会以这种格式显示:dd.mm.yyyy(即:28.10.2020)。 我希望它像这样显示 dd MMM, yyyy(即:2020 年 10 月 28 日)。我尝试使用 class 日期选择器和此代码(如下所示)- 但它不起作用:$('.datepicker').datepicker({format: 'dd MMM, yyyy', todayHighlight: true});
此外,我希望日历不允许您选择今天之前的任何日期。(因此所有过去的日期都显示为灰色,无法选择。 )
您可以在此处的测试页面上查看日历:www.citycentrebudgethotel.com.au/stage/default.asp
以下是 header 脚本:
<!-- JAVASCRIPT 1/2 -->
<script type="text/javascript" src="assets/plugins/jquery/jquery.min.js"></script>
<!-- CSS Global Compulsory -->
<link rel="stylesheet" href="assets/plugins/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="assets/css/style.css">
<!-- CSS Implementing Plugins -->
<link rel="stylesheet" href="assets/plugins/line-icons/line-icons.css">
<link rel="stylesheet" href="assets/plugins/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet" href="assets/plugins/fancybox/source/jquery.fancybox.css">
<link rel="stylesheet" href="assets/plugins/layer-slider/layerslider/css/layerslider.css">
<link rel="stylesheet" href="assets/plugins/sky-forms-pro/skyforms/css/sky-forms.css">
<link rel="stylesheet" href="assets/plugins/sky-forms-pro/skyforms/custom/custom-sky-forms.css">
<!--[if lt IE 9]><link rel="stylesheet" href="assets/plugins/sky-forms-pro/skyforms/css/sky-forms-ie8.css"><![endif]-->
<!-- CSS Customization -->
<link rel="stylesheet" href="assets/css/custom.css">
这是页脚脚本:
<!-- JS Global Compulsory -->
<!-- JAVASCRIPT 2/2 -->
<script type="text/javascript" src="assets/plugins/jquery/jquery-migrate.min.js"></script>
<script type="text/javascript" src="assets/plugins/bootstrap/js/bootstrap.min.js"></script>
<!-- JS Implementing Plugins -->
<script type="text/javascript" src="assets/plugins/back-to-top.js"></script>
<script type="text/javascript" src="assets/plugins/fancybox/source/jquery.fancybox.pack.js"></script>
<script type="text/javascript" src="assets/plugins/fancybox/source/helpers/jquery.fancybox-media.js?v=1.0.0"></script>
<script type="text/javascript" src="assets/plugins/layer-slider/layerslider/js/greensock.js"></script>
<script type="text/javascript" src="assets/plugins/layer-slider/layerslider/js/layerslider.transitions.js"></script>
<script type="text/javascript" src="assets/plugins/layer-slider/layerslider/js/layerslider.kreaturamedia.jquery.js"></script>
<script type="text/javascript" src="assets/plugins/sky-forms-pro/skyforms/js/jquery-ui.min.js"></script>
<!-- JS Customization -->
<script type="text/javascript" src="assets/js/custom.js"></script>
<!-- JS Page Level -->
<script type="text/javascript" src="assets/js/app.js"></script>
<script type="text/javascript" src="assets/js/plugins/layer-slider.js"></script>
<script type="text/javascript" src="assets/js/plugins/datepicker.js"></script>
<script type="text/javascript">
jQuery(document).ready(function() {
App.init();
App.initFancybox();
LayerSlider.initLayerSlider();
Datepicker.initDatepicker();
});
</script>
<script type="text/javascript">
$(document).ready(function() {
$('.fancybox-media').fancybox({
openEffect : 'none',
closeEffect : 'none',
helpers : {
media : {}
}
});
$('.datepicker').datepicker({
format: 'dd MMM, yyyy',
todayHighlight: true
});
});
</script>
下面是显示日历字段的代码:
<form action="#" id="sky-form" class="sky-form">
<div class="row" style="margin: auto;">
<section class="col-md-6">
<label class="input">
<i class="icon-append fa fa-calendar"></i>
<input type="text" name="start" id="start" placeholder="Check In Date" class="datepicker">
</label>
</section>
<section class="col-md-6">
<label class="input">
<i class="icon-append fa fa-calendar"></i>
<input type="text" name="finish" id="finish" placeholder="Check out Date" class="datepicker">
</label>
</section>
</div>
</form>
对于如何设置日期显示格式和限制过去日期的任何建议,我将不胜感激。
谢谢!
禁用过去的日期:
Bootstrap Datepicker 提供 startDate
:
选项
https://bootstrap-datepicker.readthedocs.io/en/latest/options.html#startdate
创建一个新的 Date 对象而不给它任何选项将默认为今天:
var d = new Date():
尝试将此用于 startDate
选项:
$('.datepicker').datepicker({startDate: new Date()});
显示格式
引号很重要,尝试用双引号括起您的格式:
$('.datepicker').datepicker({format: "dd MMM, yyyy", todayHighlight: true});
如果失败,我有时会发现我需要通过 toDisplay
:
设置这个值
$('.datepicker').datepicker({
format: {
// We're sending an object, not a string
toDisplay: function (date, format, language) {
// this gets messy, sorry
var d = new Date(date);
var year = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(d);
var month = new Intl.DateTimeFormat('en', { month: 'short' }).format(d);
var day = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(d);
return day + " " + month + ", " + year;
}
}
});
好的,我想我已经找到问题所在了。我的 bootstrap/datepicker 版本与文档引用的版本不同,并且不使用相同的变量名称。这就是为什么 Chiperific 的伟大建议对我不起作用。
我已经将他的回答标记为正确,因为如果我有一个正常的设置,它会提供正确的解决方案。
对于其他 运行 遇到此类问题的人,我将 post 在这里 datepicker.js 我的网站正在使用。此脚本已调整为以我想要的格式显示日期,并且也不允许选择过去的日期:
var Datepicker = function () {
return {
//Datepickers
initDatepicker: function () {
// Regular datepicker
$('#date').datepicker({
dateFormat: 'dd MM, yy',
prevText: '<i class="fa fa-angle-left"></i>',
nextText: '<i class="fa fa-angle-right"></i>'
});
// Date range
$('#start').datepicker({
dateFormat: 'dd MM, yy',
prevText: '<i class="fa fa-angle-left"></i>',
nextText: '<i class="fa fa-angle-right"></i>',
minDate: 'TODAY()',
onSelect: function( selectedDate )
{
$('#finish').datepicker('option', 'minDate', selectedDate);
}
});
$('#finish').datepicker({
dateFormat: 'dd MM, yy',
prevText: '<i class="fa fa-angle-left"></i>',
nextText: '<i class="fa fa-angle-right"></i>',
onSelect: function( selectedDate )
{
$('#start').datepicker('option', 'maxDate', selectedDate);
}
});
// Inline datepicker
$('#inline').datepicker({
dateFormat: 'dd MM, yy',
prevText: '<i class="fa fa-angle-left"></i>',
nextText: '<i class="fa fa-angle-right"></i>'
});
// Inline date range
$('#inline-start').datepicker({
dateFormat: 'dd MM, yy',
prevText: '<i class="fa fa-angle-left"></i>',
nextText: '<i class="fa fa-angle-right"></i>',
onSelect: function( selectedDate )
{
$('#inline-finish').datepicker('option', 'minDate', selectedDate);
}
});
$('#inline-finish').datepicker({
dateFormat: 'dd MM, yy',
prevText: '<i class="fa fa-angle-left"></i>',
nextText: '<i class="fa fa-angle-right"></i>',
onSelect: function( selectedDate )
{
$('#inline-start').datepicker('option', 'maxDate', selectedDate);
}
});
}
};
}();
我第一次在酒店网站上使用 Bootstrap 日期选择器。我已经安装了它,它确实显示了它应该显示的日历。
但是,日期一旦被选中,就会以这种格式显示:dd.mm.yyyy(即:28.10.2020)。 我希望它像这样显示 dd MMM, yyyy(即:2020 年 10 月 28 日)。我尝试使用 class 日期选择器和此代码(如下所示)- 但它不起作用:$('.datepicker').datepicker({format: 'dd MMM, yyyy', todayHighlight: true});
此外,我希望日历不允许您选择今天之前的任何日期。(因此所有过去的日期都显示为灰色,无法选择。 )
您可以在此处的测试页面上查看日历:www.citycentrebudgethotel.com.au/stage/default.asp
以下是 header 脚本:
<!-- JAVASCRIPT 1/2 -->
<script type="text/javascript" src="assets/plugins/jquery/jquery.min.js"></script>
<!-- CSS Global Compulsory -->
<link rel="stylesheet" href="assets/plugins/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="assets/css/style.css">
<!-- CSS Implementing Plugins -->
<link rel="stylesheet" href="assets/plugins/line-icons/line-icons.css">
<link rel="stylesheet" href="assets/plugins/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet" href="assets/plugins/fancybox/source/jquery.fancybox.css">
<link rel="stylesheet" href="assets/plugins/layer-slider/layerslider/css/layerslider.css">
<link rel="stylesheet" href="assets/plugins/sky-forms-pro/skyforms/css/sky-forms.css">
<link rel="stylesheet" href="assets/plugins/sky-forms-pro/skyforms/custom/custom-sky-forms.css">
<!--[if lt IE 9]><link rel="stylesheet" href="assets/plugins/sky-forms-pro/skyforms/css/sky-forms-ie8.css"><![endif]-->
<!-- CSS Customization -->
<link rel="stylesheet" href="assets/css/custom.css">
这是页脚脚本:
<!-- JS Global Compulsory -->
<!-- JAVASCRIPT 2/2 -->
<script type="text/javascript" src="assets/plugins/jquery/jquery-migrate.min.js"></script>
<script type="text/javascript" src="assets/plugins/bootstrap/js/bootstrap.min.js"></script>
<!-- JS Implementing Plugins -->
<script type="text/javascript" src="assets/plugins/back-to-top.js"></script>
<script type="text/javascript" src="assets/plugins/fancybox/source/jquery.fancybox.pack.js"></script>
<script type="text/javascript" src="assets/plugins/fancybox/source/helpers/jquery.fancybox-media.js?v=1.0.0"></script>
<script type="text/javascript" src="assets/plugins/layer-slider/layerslider/js/greensock.js"></script>
<script type="text/javascript" src="assets/plugins/layer-slider/layerslider/js/layerslider.transitions.js"></script>
<script type="text/javascript" src="assets/plugins/layer-slider/layerslider/js/layerslider.kreaturamedia.jquery.js"></script>
<script type="text/javascript" src="assets/plugins/sky-forms-pro/skyforms/js/jquery-ui.min.js"></script>
<!-- JS Customization -->
<script type="text/javascript" src="assets/js/custom.js"></script>
<!-- JS Page Level -->
<script type="text/javascript" src="assets/js/app.js"></script>
<script type="text/javascript" src="assets/js/plugins/layer-slider.js"></script>
<script type="text/javascript" src="assets/js/plugins/datepicker.js"></script>
<script type="text/javascript">
jQuery(document).ready(function() {
App.init();
App.initFancybox();
LayerSlider.initLayerSlider();
Datepicker.initDatepicker();
});
</script>
<script type="text/javascript">
$(document).ready(function() {
$('.fancybox-media').fancybox({
openEffect : 'none',
closeEffect : 'none',
helpers : {
media : {}
}
});
$('.datepicker').datepicker({
format: 'dd MMM, yyyy',
todayHighlight: true
});
});
</script>
下面是显示日历字段的代码:
<form action="#" id="sky-form" class="sky-form">
<div class="row" style="margin: auto;">
<section class="col-md-6">
<label class="input">
<i class="icon-append fa fa-calendar"></i>
<input type="text" name="start" id="start" placeholder="Check In Date" class="datepicker">
</label>
</section>
<section class="col-md-6">
<label class="input">
<i class="icon-append fa fa-calendar"></i>
<input type="text" name="finish" id="finish" placeholder="Check out Date" class="datepicker">
</label>
</section>
</div>
</form>
对于如何设置日期显示格式和限制过去日期的任何建议,我将不胜感激。
谢谢!
禁用过去的日期:
Bootstrap Datepicker 提供 startDate
:
https://bootstrap-datepicker.readthedocs.io/en/latest/options.html#startdate
创建一个新的 Date 对象而不给它任何选项将默认为今天:
var d = new Date():
尝试将此用于 startDate
选项:
$('.datepicker').datepicker({startDate: new Date()});
显示格式
引号很重要,尝试用双引号括起您的格式:
$('.datepicker').datepicker({format: "dd MMM, yyyy", todayHighlight: true});
如果失败,我有时会发现我需要通过 toDisplay
:
$('.datepicker').datepicker({
format: {
// We're sending an object, not a string
toDisplay: function (date, format, language) {
// this gets messy, sorry
var d = new Date(date);
var year = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(d);
var month = new Intl.DateTimeFormat('en', { month: 'short' }).format(d);
var day = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(d);
return day + " " + month + ", " + year;
}
}
});
好的,我想我已经找到问题所在了。我的 bootstrap/datepicker 版本与文档引用的版本不同,并且不使用相同的变量名称。这就是为什么 Chiperific 的伟大建议对我不起作用。
我已经将他的回答标记为正确,因为如果我有一个正常的设置,它会提供正确的解决方案。
对于其他 运行 遇到此类问题的人,我将 post 在这里 datepicker.js 我的网站正在使用。此脚本已调整为以我想要的格式显示日期,并且也不允许选择过去的日期:
var Datepicker = function () {
return {
//Datepickers
initDatepicker: function () {
// Regular datepicker
$('#date').datepicker({
dateFormat: 'dd MM, yy',
prevText: '<i class="fa fa-angle-left"></i>',
nextText: '<i class="fa fa-angle-right"></i>'
});
// Date range
$('#start').datepicker({
dateFormat: 'dd MM, yy',
prevText: '<i class="fa fa-angle-left"></i>',
nextText: '<i class="fa fa-angle-right"></i>',
minDate: 'TODAY()',
onSelect: function( selectedDate )
{
$('#finish').datepicker('option', 'minDate', selectedDate);
}
});
$('#finish').datepicker({
dateFormat: 'dd MM, yy',
prevText: '<i class="fa fa-angle-left"></i>',
nextText: '<i class="fa fa-angle-right"></i>',
onSelect: function( selectedDate )
{
$('#start').datepicker('option', 'maxDate', selectedDate);
}
});
// Inline datepicker
$('#inline').datepicker({
dateFormat: 'dd MM, yy',
prevText: '<i class="fa fa-angle-left"></i>',
nextText: '<i class="fa fa-angle-right"></i>'
});
// Inline date range
$('#inline-start').datepicker({
dateFormat: 'dd MM, yy',
prevText: '<i class="fa fa-angle-left"></i>',
nextText: '<i class="fa fa-angle-right"></i>',
onSelect: function( selectedDate )
{
$('#inline-finish').datepicker('option', 'minDate', selectedDate);
}
});
$('#inline-finish').datepicker({
dateFormat: 'dd MM, yy',
prevText: '<i class="fa fa-angle-left"></i>',
nextText: '<i class="fa fa-angle-right"></i>',
onSelect: function( selectedDate )
{
$('#inline-start').datepicker('option', 'maxDate', selectedDate);
}
});
}
};
}();