You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Asp.net中DatePicker异常:仅一个日期选择器可弹出日期面板

解决Asp.net中两个DatePicker仅一个弹出的问题

核心问题1:DatePicker仅绑定了第一个文本框

你的jQuery选择器$('[id*=txtDate]')只匹配ID包含txtDate的元素,但第二个文本框的ID是textDate,无法被这个选择器命中,导致第二个文本框没有初始化DatePicker组件。

解决办法:
推荐给两个文本框添加统一的CSS类(更易维护):

  1. 修改前端文本框代码,添加date-picker类:
<div class="form-group left">
    <label for="invoicedate" class="label-title"> Invoice Date : </label>
    <asp:TextBox ID="txtDate" runat="server" class="form-input date-picker" required="required" ReadOnly="true"  placeholder="mm/dd/yyyy" OnClick="Datebtn_Click"></asp:TextBox>
</div>
<div class="form-group left">
    <label for="shipmentdate" class="label-title"> Shipment Date : </label>
    <asp:TextBox ID="textDate" runat="server" class="form-input date-picker" required="required" ReadOnly="true"  placeholder="mm/dd/yyyy" OnClick="Addbtn_Click"></asp:TextBox>
</div>
  1. 修改jQuery脚本,通过类选择器绑定:
<script type="text/javascript">
    $(function () {
        $('.date-picker').datepicker({
            changeMonth: true,
            changeYear: true,
            format: "dd/mm/yyyy",
            language: "tr"
        });
    });
</script>

核心问题2:后台事件获取错误的文本框值

Addbtn_Click方法里,你获取的是txtDate.UniqueID对应的值,而非第二个文本框textDate的,会导致点击第二个文本框时弹出错误的日期值。同时两个RegisterStartupScript的key重复(都是alert),会导致脚本被覆盖。

解决办法:
修改后台代码:

protected void Datebtn_Click(object sender, EventArgs e)
{
    string dt = Request.Form[txtDate.UniqueID];
    ClientScript.RegisterStartupScript(this.GetType(), "alert-invoice", "alert('Selected Date:" + dt + "'); ", true);
}

protected void Addbtn_Click(object sender, EventArgs e)
{
    string dt = Request.Form[textDate.UniqueID];
    ClientScript.RegisterStartupScript(this.GetType(), "alert-shipment", "alert('Selected Date:" + dt + "'); ", true);
}

额外注意:ReadOnly属性的潜在问题

设置ReadOnly="true"后,部分浏览器可能会阻止点击事件触发,导致DatePicker无法弹出。可以去掉该属性,改用onfocus="this.blur()"禁止手动输入:

<asp:TextBox ID="txtDate" runat="server" class="form-input date-picker" required="required" placeholder="mm/dd/yyyy" OnClick="Datebtn_Click" onfocus="this.blur()"></asp:TextBox>
<asp:TextBox ID="textDate" runat="server" class="form-input date-picker" required="required" placeholder="mm/dd/yyyy" OnClick="Addbtn_Click" onfocus="this.blur()"></asp:TextBox>

内容的提问来源于stack exchange,提问作者kimk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 00:04:02