【问题标题】:Jquery time picker not working in the usercontrolJquery时间选择器在用户控件中不起作用
【发布时间】:2011-09-08 10:32:12
【问题描述】:

当我在网页(.aspx 文件)中使用以下代码时,它工作正常;但是当我在用户控件(.ascx 文件)中使用以下内容时,它不起作用。

如何解决这个问题?我是否必须在母版页中进行任何修改。

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="ExclusionSwipeCardRequest.ascx.cs" Inherits="ExclusionSwipeCardRequest" %>
<link type="text/css" rel="stylesheet" href="../App_Themes/LMSTheme/jquery-ui-1.8.16.custom.css" />
<script type="text/javascript" src="../Scripts/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="../Scripts/jquery-ui-1.8.16.custom.min.js"></script>
<script type="text/javascript" language="javascript">
$(function() {
    $("#txtFromDate").datepicker({ dateFormat: 'mm-dd-yy', changeMonth: true, changeYear: true });   
});
</script>

<asp:TextBox ID="txtFromDate" MaxLength="10" runat="server" autocomplete="off" ToolTip="Enter From Date"></asp:TextBox>

【问题讨论】:

    标签: c# jquery jquery-ui jquery-ui-datepicker


    【解决方案1】:

    文本框的 id 不正确,

    试试

    $("#<%=txtFromDate.ClientID%>").datepicker({ dateFormat: 'mm-dd-yy', changeMonth: true, changeYear: true }); 
    

    而不是

    $("#txtFromDate").datepicker({ dateFormat: 'mm-dd-yy', changeMonth: true, changeYear: true }); 
    

    【讨论】:

    • 我收到错误“System.Web.UI.WebControls.TextBox”不包含“ClientId”的定义
    • 对不起,最后是ClientID大写D
    • 嗯,ClientID是所有类型控件的一个属性,msdn.microsoft.com/en-us/library/…
    • 你是如何在页面上注册控件的?
    • $("#").datepicker 我用过这个,但不工作
    【解决方案2】:

    我可能建议您的路径已更改,这意味着脚本/CSS 导入的 src/href 值是错误的。

    您可以尝试限定从网站根目录开始的路径(以正斜杠/ 开头的URL),而不是使用跳转up 目录的相对路径,这样:

    <link type="text/css" rel="stylesheet" href="/Scripts/App_Themes/LMSTheme/jquery-ui-1.8.16.custom.css" />
    <script type="text/javascript" src="/Scripts/jquery-1.6.2.min.js"></script>
    <script type="text/javascript" src="/Scripts/jquery-ui-1.8.16.custom.min.js"></script>
    

    显然,如果根目录和Scripts 文件夹之间有任何路径,则需要指定它,例如:

    src="/MyIntermediatePath/Scripts/jquery-1.6.2.min.js"
    

    另外值得一提的是,虽然控件ID前缀是可以管理的(甚至在.NET4中是关闭的),但一般服务器端控件在页面中的ID都是由其父容器炮制的,例如:

    txtFromDate -> ctl001_txtFromDate
    

    如果您最初没有在页面中使用服务器端控件,您可能需要检查您是否没有引入 jQuery 在呈现的页面中查找控件的问题。

    【讨论】:

    • 他应该在ASCX中导入脚本吗?不应该将其交还给页面,例如ScriptManager?
    • @Rup 我猜那是另一回事;你是对的(IMO),但为了手头的问题,这可能有助于解决它。真的不想就在哪里这些文件应该被引用。
    • 不,它不起作用......问题仅在用户控件中......如何在用户控件中使用......
    • 我想用这个是jquery中的一个吗?例如 $("#ctl001_txtFromDate").datepicker(
    • 嗯,不是真的,但你可以试试$("input[type='text']:eq(0)")。这将抓取页面上的第一个文本输入,并且应该适合此目的,尽管它不健壮并且在页面结构更改时可能会失败。
    【解决方案3】:

    问题是脚本引用中的 src url。它与使用控件的页面位置相关,而不是控件本身。

    我建议您将 css/脚本链接放在 [master] 页面中,而不是用户控件中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多