Bootstrap 仅日期选择器年份不具有约束力
Bootstrap Datepicker Year Only Not Binding
在我的 MVC 项目中,我的模型中有一个可为空的 Datetime
属性,名为 ReplacementDate
。
在我看来,我有一个 Bootstrap 日期选择器(2.0 版),它使用以下代码初始化:
$('.input-group.decade').datepicker({
format: "yyyy",
viewMode: "years",
minViewMode: "years",
keyboardNavigation: false,
forceParse: false,
autoclose: true,
showOnFocus: false
});
日期选择器在屏幕上正确呈现,我只能 select 日历中的年份值。但是当我 post 表单数据时 ReplacementDate
属性 没有值。我已经尝试将格式设置为“yyyy”和 "yyyy" 甚至 "YYYY" 但似乎没有任何东西允许绑定发生。
奇怪的是,我在同一页面上有另一个日期选择器,允许用户 select 一个月和一年,并且它在提交到不同的可为空的日期 属性 时正确绑定。代码如下:
$('.input-group.month').datepicker({
format: "mm/yyyy",
viewMode: "months",
minViewMode: "months",
keyboardNavigation: false,
forceParse: false,
autoclose: true,
showOnFocus: false
});
我做错了什么来阻止 ReplacementDate
值正确绑定?我是否必须将 ReplacementDate
设置为可为空的 int 或其他内容?
我建议这样做:
$('#date1').datepicker({
changeMonth: true,
changeYear: true,
showButtonPanel: true,
dateFormat: 'yy',
onClose: function(dateText, inst) {
var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
$(this).datepicker('setDate', new Date(year));
console.log($("#ui-datepicker-div .ui-datepicker-year :selected").val())
}
});
#ui-datepicker-div {
font-size: 12px;
}
.ui-datepicker-calendar {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/themes/vader/jquery-ui.min.css" />
<input type="text" id="date1" name="date1" />
我将 ReplacementDate
DateTime
属性 更改为 int
并绑定了。我不知道为什么当它是 DateTime
时它不会绑定,因为 MM/yyyy 版本绑定得很好 DateTime
.
在我的 MVC 项目中,我的模型中有一个可为空的 Datetime
属性,名为 ReplacementDate
。
在我看来,我有一个 Bootstrap 日期选择器(2.0 版),它使用以下代码初始化:
$('.input-group.decade').datepicker({
format: "yyyy",
viewMode: "years",
minViewMode: "years",
keyboardNavigation: false,
forceParse: false,
autoclose: true,
showOnFocus: false
});
日期选择器在屏幕上正确呈现,我只能 select 日历中的年份值。但是当我 post 表单数据时 ReplacementDate
属性 没有值。我已经尝试将格式设置为“yyyy”和 "yyyy" 甚至 "YYYY" 但似乎没有任何东西允许绑定发生。
奇怪的是,我在同一页面上有另一个日期选择器,允许用户 select 一个月和一年,并且它在提交到不同的可为空的日期 属性 时正确绑定。代码如下:
$('.input-group.month').datepicker({
format: "mm/yyyy",
viewMode: "months",
minViewMode: "months",
keyboardNavigation: false,
forceParse: false,
autoclose: true,
showOnFocus: false
});
我做错了什么来阻止 ReplacementDate
值正确绑定?我是否必须将 ReplacementDate
设置为可为空的 int 或其他内容?
我建议这样做:
$('#date1').datepicker({
changeMonth: true,
changeYear: true,
showButtonPanel: true,
dateFormat: 'yy',
onClose: function(dateText, inst) {
var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
$(this).datepicker('setDate', new Date(year));
console.log($("#ui-datepicker-div .ui-datepicker-year :selected").val())
}
});
#ui-datepicker-div {
font-size: 12px;
}
.ui-datepicker-calendar {
display: none;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/themes/vader/jquery-ui.min.css" />
<input type="text" id="date1" name="date1" />
我将 ReplacementDate
DateTime
属性 更改为 int
并绑定了。我不知道为什么当它是 DateTime
时它不会绑定,因为 MM/yyyy 版本绑定得很好 DateTime
.