【问题标题】:Why Jquery datePicker not working on asp.net textbox为什么 Jquery datePicker 不能在 asp.net 文本框上工作
【发布时间】:2014-06-21 19:16:48
【问题描述】:

我正在尝试使用 jquery-ui-1.10.4 中提供的 jquery datepicker。但问题是它对于没有服务器端的 html 输入标签工作正常。

一旦我将它用于服务器端,jquery 功能就没有执行

编码为

<script type="text/javascript">
    $(function () {
        $("#datepicker").datepicker({
            changeMonth: true,
            changeYear: true
        });
    });

工件是

<input type="text" id="datepicker"/>//Without runat attribute

但是当添加 runat 属性时它停止工作

<input type="text" id="datepicker" runat="server"/>//Without runat attribute

谁来帮忙!!!

【问题讨论】:

  • 它在母版页中吗?
  • 您发送给 datepicker 的日期格式是什么?
  • @RashminJaviya 它在母版页内
  • @HassaanKhan 请在下面查看我的回答

标签: javascript jquery asp.net datepicker


【解决方案1】:

这可能是由于母版页。当您使用母版页时,它会将前缀“CPH”附加到子页面中的每个控件。尝试使用类访问。

Javascript

<input type="text" id="datepicker" runat="server" class="datepicker"/>

HTML

$(function () {
    $(".datepicker").datepicker({
        changeMonth: true,
        changeYear: true
    });
});

如果您不想使用类,那么第二种方法是使用$("#CPH_datepicker") 作为选择器

【讨论】:

  • 问题是 runat="server" 正在生成和 id 所以我使用 ClientIdMode="Static" 属性解决了它
  • 不,使用“CPH_DatePicker”作为 jQuery 选择器是个坏主意。它不是强类型的,它基于 ID 是如何生成的假设(可能会改变)。相反,将 ClientIdMode 设置为 Static 或使用内联表达式检索 ID 是首选解决方案。
【解决方案2】:

服务器端控件会根据母版页内的嵌套层次结构自动生成一个 ID。

所以这是一个选项:

<input type="text" id="datepicker" runat="server" ClientIdMode="Static" />

或者这个:

$(function () {
    $("#<%= datepicker.ClientId %>").datepicker({
        changeMonth: true,
        changeYear: true
    });
});

第二个选项更可取,因为它是强类型的。尽管使用第一个解决方案,您也可以在页面、web.config 或 machine.config 级别更改 ClientIdMode。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 2011-10-14
    相关资源
    最近更新 更多