Javascript 内容页中的JQuery未执行
我一直试图让jquery datepicker插件在内容页面上工作,但根本无法让页面执行任何jquery。我设法让日期选择器在我的母版页上工作,但没有在内容页上工作。firefox的firebug工具也没有发现任何javascript错误。如果有人能在我的内容页面上使用日期选择器,那就太好了。提前谢谢 .ASPX:Javascript 内容页中的JQuery未执行,javascript,jquery,asp.net,master-pages,Javascript,Jquery,Asp.net,Master Pages,我一直试图让jquery datepicker插件在内容页面上工作,但根本无法让页面执行任何jquery。我设法让日期选择器在我的母版页上工作,但没有在内容页上工作。firefox的firebug工具也没有发现任何javascript错误。如果有人能在我的内容页面上使用日期选择器,那就太好了。提前谢谢 .ASPX: <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script type="text/javascript">
$(document).ready(function () {
$("#TextBoxConnectedOn").datepicker();
});
</script>
</asp:Content>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<input type="text" name="TextBoxConnectedOn" id="TextBoxConnectedOn"
runat="server" MaxLength="10"/>
</asp:Content>
$(文档).ready(函数(){
$(“#TextBoxConnectedOn”).datepicker();
});
母版页标题:
<head runat="server">
<link type="text/css" href="pages/scripts/themes/ui-darkness/jquery.ui.all.css"
rel="stylesheet" />
<script type="text/javascript" src="scripts/jquery-1.4.2.js"></script>
<script type="text/javascript" src="scripts/ui/jquery.ui.core.min.js"></script>
<script type="text/javascript" src="scripts/ui/jquery.ui.datepicker.min.js"></script>
<asp:ContentPlaceHolder ID="HeadContent" runat="server">
</asp:ContentPlaceHolder>
</head>
编辑我将“#TextBoxConnectedOn”改为“#”,现在firebug显示,一旦我点击输入,它就会加载所需的图片,但仍然不显示日期选择器。我的问题主题和挫折感的主要来源是jquery没有执行,所以我想这篇文章已经回答了,感谢所有的信息,我看看我是否能找出为什么它没有显示为服务器生成的控件,输入框的
id
实际上不会连接到文本框上;ASP.NET将为您生成一个id
。在浏览器中查看页面源以验证这一点
你有两个选择:
从控件中删除runat=“server”
属性,使其成为常规HTML元素(它真的需要由服务器生成吗?),或者
参考正确的id
像这样:
<script type="text/javascript">
$(document).ready(function () {
$("#<%= TextBoxConnectedOn.ClientID %>").datepicker();
});
</script>
$(文档).ready(函数(){
$(“#”)日期选择器();
});
编辑
根据@jbn下面的评论,从ASP.NET 4开始,您可以告诉服务器控件使用静态ID,方法是将其ClientIDMode
设置为static
我以前也遇到过类似的问题,jQuery被加载到母版页,然后加载到内容页,这导致内容页上的jQuery无法工作,因此,请检查firebug中的.net选项卡,并确保jQuery只加载一次
希望这有帮助
<script type="text/javascript" src='<%=Url.Content("~/scripts/ui/jquery.ui.core.min.js")%>'></script>
这通常是由于路由的工作方式导致js文件未加载的结果。尝试使用如上所示的Url.Content()方法。这是因为内容页更改了input type=“text”
的id
有两种方法可以克服这个问题
(a) 为输入类型指定一个类,并使用该类调用它
<input type="text" name="TextBoxConnectedOn" id="TextBoxConnectedOn"
runat="server" MaxLength="10" class="mypicker/>
(b) 将HTMLControl设置为ASP.NET控件,并设置clientMode=“static”
这样就无需更改脚本。是否加载了所有JavaScript?你可以查看firebug的“网络”选项卡。你确定你没有那个TextBoxConnectedOn的双重ID吗?@marto所有这些都在加载,谢谢你的提示,我不知道firebug可以告诉我。内容是在母版页之后动态加载的吗?i、 e.如果母版页加载并运行$(“#TextBoxConnectedOn”).datepicker()
,是否已加载带有id=“TextBoxConnectedOn”
的文本框?为此,需要使用CliendID控件属性:$(document).ready(函数(){$('').datepicker();})代码>谢谢你的回答。我会用谷歌搜索一下,看看我是否能得到正确的id。对不起,那是在那里,但markdown搞乱了我的格式:)好的,我再次检查了firebug,尽管它没有显示,但我现在单击输入后,它正在加载所需的图片。另外,在asp.net 4中,你可以将id设置为静态,因此,在javascript中,相同的id(没有任何前缀)是可用的。Firebug显示所有id都正在加载感谢回答它在Firebug中只显示了一次,所以我认为它只加载了一次,感谢回答
$(document).ready(function () {
$(".mypicker").datepicker();
});
<asp:TextBox ID="TextBoxConnectedOn" runat="server"
ClientIDMode="Static"
Width="240">
</asp:TextBox>