2012-09-09 2 views
0

jquery 키패드의 소스는 here을 클릭하십시오.마스터 페이지를 사용할 때이 Jquery 키패드가 작동하지 않는 이유는 무엇입니까?

프로젝트에서이 키패드를 별도의 양식으로 사용했는데 작동하지만 마스터 페이지가있는 다른 양식에서 같은 것을 사용할 때마다 작동하지 않습니다. 나도 같은 형태의 내 masterpage 참조를 삭제하고 내가 대체해도 내 마스터 페이지에서 모든 오프 그는 필요한 참조 (동일 참조 또한 단지의 경우 형태의 머리 부분에 추가됩니다!)

<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> 

를 추가 jQuery 키보드가 작동하는 HTML 태그가있는 컨텐츠 보유자.

아무도 나에게 왜 그것이 작동하지 않는지 제안 할 수 있습니까? 1

UPDATE 내가 새로운 테스트 masterpage를 만든이 문제에 대한 자세한을 테스트합니다. 코드 :

<%@ 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> 

내가 뭘 잘못하고 있니? 마스터 페이지에서 사용할 수없는 이유는 무엇입니까?

답변

2

스크립트 src 경로가 항상 작동하지 않습니다. 그들은 귀하의 페이지가 루트 폴더 안의 폴더에있을 때만 작동하지만, 이미 루트에 있거나 더 깊숙한 곳에서는 작동하지 않습니다.

마스터 페이지 메커니즘은 문제를 더욱 복잡하게 만듭니다. 마스터 페이지를 사용하지 않으면 링크가 작동하는지 여부를 쉽게 알 수 없습니다. src 값과 함께 페이지 경로가 정상인지 확인해야합니다. 예를 들어 페이지가 하나의 폴더에있는 경우 작동합니다. 그러나 마스터 페이지를 방문하면 링크가 마스터 페이지가 아닌 페이지에 상대적으로 작동하므로 마스터 페이지를 작성할 때 트리에있는 위치를 알 수 없습니다.

그것에 대한 해결책은 같은 서버의 도움으로 루트에서 링크를 지정하는 것입니다

:

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

(귀하의 "App_Themes"폴더가 루트 폴더에 있어야합니다)

+0

형태 마스터 페이지는 같은 폴더에 있습니다. 나는 "~"을 사용했으나 문제가 해결되지 않았습니다. 마스터 페이지에 대신 내 양식의 머리글 콘텐츠 장소 홀더 키패드에 대한 모든 참조를 넣어 경우에도 작동하지 않습니다. –

+0

자바 스크립트를 디버그하고 왜 작동하지 않는지 확인해야합니다. –

관련 문제