.Net中如何实现仅选择年月的Bootstrap日期选择器?
在.NET项目中实现Bootstrap Datepicker仅选择年月的问题
我在.NET项目中尝试实现仅允许用户选择年月的日期选择功能,虽然引入了Bootstrap Datepicker,但未能达到预期效果——当前日期选择器仍支持选择日、月、年。以下是我的代码,请问遗漏了哪一步?
JavaScript代码
$(document).ready(function () { $("#datepicker").datepicker( { changeMonth: true, changeYear: true, format: "mm/yyyy", language: "tr" }); });
HTML及Razor代码
<form method="post" asp-action="Create"> <div class="container"> <div class="row p-2"> <h2 class="text-primary row-6">Create a Period</h2> </div> @*<div asp-validation-summary="All" class="text-danger"></div>*@ <div class="my-3"> <label asp-for="Period"></label> <input asp-for="Period" class="form-control" /> </div> <div class="my-3"> <label asp-for="PardiemType"></label> <input asp-for="PardiemType" class="form-control" id="datepicker" /> </div> <button type="submit" class="btn btn-primary">Create</button> <a asp-controller="UserPeriod" asp-action="Index" class="btn btn-secondary">Back to List</a> </div>
@section Scripts{ @{ <partial name="_ValidationScriptsPartial" /> <script src="~/js/period.js"></script> } }
当前效果:
解决方案
你需要添加控制视图层级的配置项,Bootstrap Datepicker默认显示日视图,必须通过参数限制只能选择年月:
1. 修改JavaScript配置
添加viewMode和minViewMode参数,确保选择器停留在年月层级:
$(document).ready(function () { $("#datepicker").datepicker({ changeMonth: true, changeYear: true, format: "mm/yyyy", language: "tr", viewMode: "months", // 初始显示年月视图 minViewMode: "months" // 限制用户无法切换到日视图 }); });
如果使用的是旧版Bootstrap Datepicker(比如v1.x),可能需要用startView替代viewMode,参数值为1(1代表月份视图,0为日视图,2为年视图):
$(document).ready(function () { $("#datepicker").datepicker({ changeMonth: true, changeYear: true, format: "mm/yyyy", language: "tr", startView: 1, minViewMode: 1 }); });
2. 避免原生日期选择器冲突
检查输入框的type属性,如果是date类型会触发浏览器原生日期选择器,建议改为text类型:
<input asp-for="PardiemType" class="form-control" id="datepicker" type="text" />
内容的提问来源于stack exchange,提问作者omneer
相关产品推荐
相关产品推荐

