当我使用母版页时,为什么这个Jquery键盘不工作?

时间:2012-09-09 10:24:14

标签: jquery asp.net

点击here获取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>

我做错了什么?为什么我无法使用母版页?

1 个答案:

答案 0 :(得分:2)

您的脚本src路径并不总是有效。只有当您的页面位于根文件夹中的文件夹中时,它们才会起作用,但如果您已经在根目录中已经或更深入,那么它们就不会起作用。

母版页机制使问题更加复杂。如果您不使用母版页,则不难看出您的链接是否有效。您只需要查看您的页面路径是否正常,具有src值,例如,如果您的页面位于一个文件夹中,它将起作用。但是,当您进入母版页时,您的链接将相对于页面而不是母版页工作,因此当您编写母版页时,您不知道您在树中的位置。

解决方案是在服务器的帮助下从根指定链接:

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

(您的“App_Themes”文件夹应位于根文件夹中)