0

单击此处获取 jquery 键盘的来源。

我在我的项目中以单独的形式使用了这个键盘,它可以工作,但是每当我在另一个带有母版页的形式中使用相同的东西时,它就不起作用。在我的母版页中,他添加了所有必要的参考资料(同样的参考资料也在表格的头部添加,以防万一!)

<script src="../App_Themes/Default/js/jquery-1.6.1.js" type="text/javascript"></script>

<%--<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>--%>

<script src="../App_Themes/Default/js/jquery.keypad.js" type="text/javascript">    </script>

<script type="text/javascript">
$(function () {
$('#txtFTP').keypad();

});
</script> 

即使我删除了相同表单的母版页引用并将内容占位符替换为 HTML 标记,jquery 键盘也能正常工作。

谁能建议我为什么它不起作用?

更新 1

为了测试有关此问题的更多信息,我创建了一个新的测试母版页。编码:

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="TestMasterPage.master.cs" 

 Inherits="Member_TestMasterPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org

/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
 <title>Untitled Page</title>
 <asp:ContentPlaceHolder id="head" runat="server">
 </asp:ContentPlaceHolder>
</head>
<body>
 <form id="form1" runat="server">
  <div>
    <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">

    </asp:ContentPlaceHolder>
  </div>
 </form>
</body>
</html>

如您所见,jquery 的母版页中没有参考。

然后我创建了一个新的 test.aspx 页面。编码:

<%@ Page Language="C#" MasterPageFile="~/Member/TestMasterPage.master" 

AutoEventWireup="true" CodeFile="2.aspx.cs" Inherits="_2" %>

<asp:Content ContentPlaceHolderID="head" runat="server">
 <script src="../App_Themes/Default/js/jquery-1.6.1.js" type="text/javascript"> 
 </script>

 <script src="../App_Themes/Default/js/jquery.keypad.js" type="text/javascript">
 </script>

 <script type="text/javascript">
   $(function () {
$('#txtFTP').keypad();

   });
 </script>
</asp:Content>

<asp:Content ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
 <div>
  <asp:TextBox ID="txtFTP" SkinID="Mini" runat="server" TextMode="Password"   
  ForeColor="Gray" />
 </div>
</form>

</asp:Content>

但是 jquery 键盘不起作用。但是,如果我删除母版页引用并相应地更改页面,键盘就可以工作了!编码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="2.aspx.cs" Inherits="_2" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org 
/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>

<script src="../App_Themes/Default/js/jquery-1.6.1.js" type="text/javascript"></script>

<script src="../App_Themes/Default/js/jquery.keypad.js" type="text/javascript">  
</script>

<script type="text/javascript">
$(function () {
$('#txtFTP').keypad();

});
</script>

</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtFTP" SkinID="Mini" runat="server" TextMode="Password"  
ForeColor="Gray" />
</div>
</form>
</body>
</html>

我究竟做错了什么?为什么我不能让它与母版页一起工作?

4

1 回答 1

2

您的脚本 src 路径并不总是有效。它们仅在您的页面位于根文件夹内的文件夹中时才有效,但如果您已经在根文件夹中或更深,则它们不会起作用。

母版页机制使问题更加复杂。如果您不使用母版页,那么不难看出您的链接是否有效。您只需要查看您的页面路径是否与 src 值一致,例如,如果您的页面位于一个文件夹中,它会起作用。但是,当您访问母版页时,您的链接将相对于该页面起作用,而不是母版页,因此当您编写母版页时,您对您在树中的位置一无所知。

解决方案是在服务器的帮助下从根目录指定链接,如下所示:

<script runat="server" src="~/App_Themes/Default/js/jquery-1.6.1.js" type="text/javascript"></script>

(您的“App_Themes”文件夹应该在根文件夹中)

于 2012-09-09T11:52:48.567 回答