日期选择器在 Web 应用程序中对于收集用户的数据输入至关重要。jQuery 可以轻松实现具有自定义验证的日期选择器。在本文中,我们将介绍如何使用 jQuery 创建自定义日期选择器,其中包括设置日期范围并确保用户只能选择允许期间内的日期。
一.步骤
步骤 1. HTML 结构
让我们从 HTML 结构开始。我们将使用两个文本框来表示“开始日期”和“结束日期”字段。
<tr> <td style="text-align: right; width: 21%">From Date:</td> <td style="text-align: left; width: 25%"> <asp:TextBox ID="Fromdate" runat="server" CssClass="form-control"></asp:TextBox> </td> <td style="text-align: right; width: 20%">To Date:</td> <td style="text-align: left; width: 30%"> <asp:TextBox ID="Todate" runat="server" CssClass="form-control"></asp:TextBox> </td> </tr>
复制
这里,我们有两个TextBox用于日期输入的控件,Fromdate和Todate。
步骤 2. 添加 jQuery Datepicker
接下来,我们在这些文本框上初始化 jQuery Datepicker。Datepicker 允许用户从日历弹出窗口中选择日期。
$(function () { var hdnFromDate = $("#<%=hdnFromDate.ClientID %>"); var hdnToDate = $("#<%=hdnToDate.ClientID %>"); var hdnFromdatetext = $("#<%=hdnFromdatetext.ClientID %>"); var hdnToDatetext = $("#<%=hdnToDatetext.ClientID %>"); // Get current date and 7 days prior var currentDate = new Date(); var previousDate = new Date(); previousDate.setDate(currentDate.getDate() - 7); // Initialize datepickers with the correct dates $("#<%= Fromdate.ClientID %>").datepicker({ dateFormat: "yy-mm-dd", showButtonPanel: true, changeMonth: true, changeYear: true, defaultDate: previousDate, maxDate: currentDate, onSelect: function (dateText, inst) { var selectedDate = new Date(dateText); $("#<%= Todate.ClientID %>").datepicker("option", "minDate", selectedDate); hdnFromdatetext.val(dateText); hdnFromDate.val(dateText); } }).datepicker("setDate", hdnFromdatetext.val() === "0" ? previousDate : hdnFromdatetext.val()); $("#<%= Todate.ClientID %>").datepicker({ dateFormat: "yy-mm-dd", showButtonPanel: true, changeMonth: true, changeYear: true, defaultDate: currentDate, maxDate: currentDate, onSelect: function (dateText, inst) { var selectedDate = new Date(dateText); $("#<%= Fromdate.ClientID %>").datepicker("option", "maxDate", selectedDate); hdnToDatetext.val(dateText); hdnToDate.val(dateText); } }).datepicker("setDate", hdnToDatetext.val() === "0" ? currentDate : hdnToDatetext.val()); });
复制
解释
- **初始化:**日期选择器在 Fromdate 和 Todate 上初始化,日期格式为“yy-mm-dd”。
- **默认日期:**起始日期字段默认为当前日期前 7 天,终止日期字段默认为当前日期。
- 验证
- 起始日期选择器确保所选日期不晚于结束日期。
- Todate 选择器确保所选日期不早于 Fromdate。
步骤 3. 在隐藏字段中存储日期
日期存储在隐藏字段中,以便在回发过程中维护所选的日期。
<asp:HiddenField runat="server" ID="hdnFromDate" Value="0" /> <asp:HiddenField runat="server" ID="hdnToDate" Value="0" /> <asp:HiddenField runat="server" ID="hdnFromdatetext" Value="0" /> <asp:HiddenField runat="server" ID="hdnToDatetext" Value="0" />
复制
这些隐藏字段存储日期值,以便即使在页面刷新或表单提交后也可以检索和使用它们。
二.结论
通过遵循上述步骤,您可以在 jQuery 中实现带有验证的自定义日期选择器,确保用户选择有效的日期范围。此方法对于需要日期输入的应用程序(例如预订系统或报告过滤器)非常有用。