Bootstrap 日期选择器设置开始日期失败
Bootstrap datepicker setting startdate fails
我正在使用 Bootstrap Datapicker 脚本(Link here)并且在设置开始日期时遇到问题。
Option: startDate
Date or String. Default: Beginning of time
The earliest date that may be selected; all earlier dates will be disabled.
Date should be in local timezone. String must be parsable with format
.
JavaScript:
function initializeDatePicker() {
if ($.isFunction($.fn.datepicker)) {
var datepickerLang = lang;
if (datepickerLang === "nl") {
datepickerLang = "nl-BE";
}
$(".input-group.date input").datepicker({
autoclose: true,
todayBtn: "linked",
clearBtn: true,
todayHighlight: true,
language: datepickerLang,
format: "dd-mm-yyyy",
startDate: $(this).data("startdate")
});
}
}
HTML:
<div class="input-group date small">
<input id="StartDate" class="form-control" name="StartDate" value="" data-is-required="True" data-startdate="01-12-2016" type="text">
<div class="input-group-addon">
<span class="fa fa-calendar"></span>
</div>
</div>
什么有效?
如果我将 startdate
硬编码为:
startDate: new Date() => today
startDate: "01-12-2016"
什么不起作用?
如果我尝试从我的数据属性中获取日期,则没有任何效果。
startDate: new Date($(this).data("startdate")) => returns 'Date Invalid'
startDate: $(this).data("startdate")
我不明白哪里出了问题,也不知道该如何解决。
问题是您正在使用
$(this).data("startdate")
在此实例中 "this" 设置为文档,因此它将 return null/undefined。
你需要做的就是把它改成这个
$("#StartDate").data("startdate")
----------------编辑----------------
如果你想在一个页面上使用一次但有多个日期选择器,你可以使用数据属性 insead,所以从选项中删除 startDate
$(".input-group.date input").datepicker({
autoclose: true,
todayBtn: "linked",
clearBtn: true,
todayHighlight: true,
language: datepickerLang,
format: "dd-mm-yyyy",
});
然后在您的 html 数据选择器上添加此属性
data-date-start-date="01-12-2016"
日期选择器支持 data attributes initialization,因此您可以在 HTML 中使用 data-date-start-date
而不是 data-startdate
。
这是一个工作示例:
$(".input-group.date").datepicker({
autoclose: true,
todayBtn: "linked",
clearBtn: true,
todayHighlight: true,
language: 'nl',
format: "dd-mm-yyyy"
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.6.4/css/bootstrap-datepicker3.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.6.4/js/bootstrap-datepicker.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.6.4/locales/bootstrap-datepicker.nl.min.js"></script>
<div class="input-group date small" data-date-start-date="01-12-2016">
<input id="StartDate" class="form-control" name="StartDate" value="" data-is-required="True" type="text">
<div class="input-group-addon">
<span class="fa fa-calendar"></span>
</div>
</div>
请注意,由于您正在使用 component 标记,因此 data-date-*
属性必须位于 div
而不是第 input
,此外你的选择器应该是 $(".input-group.date")
而不是 $(".input-group.date input")
.
首先,确保您的日期数据变量具有良好的价值,例如通过在构建日期选择器之前打印它。
然后,当您确定具有良好格式的良好价值时,您可以将其传递给 startDate 属性:
- 通过给出必须可以用 "format"
解析的日期字符串
- 或者通过将 Date 对象构造为流:new Date(yyyy,mm,dd)
(通过拆分数据变量的内容)。
希望对你有所帮助。
它不起作用,因为 startDate 选项中的 $(this) 不是对输入元素的引用。您应该使用 .each 并为选择器中的所有元素一一设置数据选择器:
$(".input-group.date input").each(function () {
$(this).datepicker({
autoclose: true,
todayBtn: "linked",
clearBtn: true,
todayHighlight: true,
language: datepickerLang,
format: "dd-mm-yyyy",
startDate: $(this).data("startdate")
})
});
我正在使用 Bootstrap Datapicker 脚本(Link here)并且在设置开始日期时遇到问题。
Option: startDate
Date or String. Default: Beginning of time
The earliest date that may be selected; all earlier dates will be disabled.
Date should be in local timezone. String must be parsable with
format
.
JavaScript:
function initializeDatePicker() {
if ($.isFunction($.fn.datepicker)) {
var datepickerLang = lang;
if (datepickerLang === "nl") {
datepickerLang = "nl-BE";
}
$(".input-group.date input").datepicker({
autoclose: true,
todayBtn: "linked",
clearBtn: true,
todayHighlight: true,
language: datepickerLang,
format: "dd-mm-yyyy",
startDate: $(this).data("startdate")
});
}
}
HTML:
<div class="input-group date small">
<input id="StartDate" class="form-control" name="StartDate" value="" data-is-required="True" data-startdate="01-12-2016" type="text">
<div class="input-group-addon">
<span class="fa fa-calendar"></span>
</div>
</div>
什么有效?
如果我将 startdate
硬编码为:
startDate: new Date() => today
startDate: "01-12-2016"
什么不起作用?
如果我尝试从我的数据属性中获取日期,则没有任何效果。
startDate: new Date($(this).data("startdate")) => returns 'Date Invalid'
startDate: $(this).data("startdate")
我不明白哪里出了问题,也不知道该如何解决。
问题是您正在使用
$(this).data("startdate")
在此实例中 "this" 设置为文档,因此它将 return null/undefined。 你需要做的就是把它改成这个
$("#StartDate").data("startdate")
----------------编辑----------------
如果你想在一个页面上使用一次但有多个日期选择器,你可以使用数据属性 insead,所以从选项中删除 startDate
$(".input-group.date input").datepicker({
autoclose: true,
todayBtn: "linked",
clearBtn: true,
todayHighlight: true,
language: datepickerLang,
format: "dd-mm-yyyy",
});
然后在您的 html 数据选择器上添加此属性
data-date-start-date="01-12-2016"
日期选择器支持 data attributes initialization,因此您可以在 HTML 中使用 data-date-start-date
而不是 data-startdate
。
这是一个工作示例:
$(".input-group.date").datepicker({
autoclose: true,
todayBtn: "linked",
clearBtn: true,
todayHighlight: true,
language: 'nl',
format: "dd-mm-yyyy"
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.6.3/css/font-awesome.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.6.4/css/bootstrap-datepicker3.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.6.4/js/bootstrap-datepicker.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.6.4/locales/bootstrap-datepicker.nl.min.js"></script>
<div class="input-group date small" data-date-start-date="01-12-2016">
<input id="StartDate" class="form-control" name="StartDate" value="" data-is-required="True" type="text">
<div class="input-group-addon">
<span class="fa fa-calendar"></span>
</div>
</div>
请注意,由于您正在使用 component 标记,因此 data-date-*
属性必须位于 div
而不是第 input
,此外你的选择器应该是 $(".input-group.date")
而不是 $(".input-group.date input")
.
首先,确保您的日期数据变量具有良好的价值,例如通过在构建日期选择器之前打印它。
然后,当您确定具有良好格式的良好价值时,您可以将其传递给 startDate 属性:
- 通过给出必须可以用 "format" 解析的日期字符串
- 或者通过将 Date 对象构造为流:new Date(yyyy,mm,dd) (通过拆分数据变量的内容)。
希望对你有所帮助。
它不起作用,因为 startDate 选项中的 $(this) 不是对输入元素的引用。您应该使用 .each 并为选择器中的所有元素一一设置数据选择器:
$(".input-group.date input").each(function () {
$(this).datepicker({
autoclose: true,
todayBtn: "linked",
clearBtn: true,
todayHighlight: true,
language: datepickerLang,
format: "dd-mm-yyyy",
startDate: $(this).data("startdate")
})
});