1

一種の JavaScript を使用していますが、マスター ページのないページで使用すると正常に動作しますが、マスター ページを使用するコンテンツ ページで使用すると機能しません。この問題はどうすればよいですか?

javascript のマスターページでコードを使用していませんが、必要ですか?

//Page1 without MasterPage
....
<head runat="server">
    <link rel="stylesheet" href="StyleSheet.css" type="text/css" media="screen"/>
    <script src="jquery-1.4.4.min.js" type="text/javascript" charset="utf-8"></script>
    <script src="jquery.maskedinput.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () 
        {
            $.mask.definitions['~'] = "[+-]";
            $("#date").mask("99/99/9999"); //Date
            $("input").blur(function () 
            {
                $("#info").html("Unmasked value: " + $(this).mask());
            }).dblclick(function () {
                $(this).unmask();
            });
        });
    </script>
</head>
....
<body>
    <form id="form1" runat="server">
    date :  <asp:TextBox ID="date"  runat="server" ></asp:TextBox>
.....

//page2 with MasterPage
...
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
   <link rel="stylesheet" href="StyleSheet.css" type="text/css" media="screen"/>
    <script src="jquery.maskedinput.js" type="text/javascript" charset="utf-8"></script>
    <script src="jquery-1.4.4.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () 
        {
            $.mask.definitions['~'] = "[+-]";
            $("#date").mask("99/99/9999"); //Date
            $("input").blur(function () 
            {
                $("#info").html("Unmasked value: " + $(this).mask());
            }).dblclick(function () {
                $(this).unmask();
            });
        });
    </script>
</asp:Content>
....
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
     date : <asp:TextBox ID="date"  runat="server" ></asp:TextBox>
</asp:Content>


//Master Page
...
<head runat="server">
    <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>
4

2 に答える 2

1

asp.netでは、UserControlがコンテナーに配置されると、同じタイプの複数のコントロールに関する問題を回避するために、含まれているコントロールの一意のIDが再計算されます。これは、マスターページ内のページにも当てはまります。

ページ内のコントロールの正しい一意のIDを取得するには、次のように記述する必要があります

$("#<%= date.ClientID %>").mask("99/99/9999");

これ<%= ... %>は実行時に評価され、正しいIDに置き換えられます(ClientIDは、レンダリングされるコントロールの一意のIDを保持するasp.netコントロールのプロパティです)

于 2012-10-08T21:45:43.760 に答える
0

レンダリングされたコントロールの ID は、呼び出した ID とは異なります。

ブラウザに送信された HTML ソースを見ると、dateコントロールは実際には のような名前になっていますct100_date

したがって、実際にレンダリングされた ID を見つけて、 の$("#date")ようなものに変更します$("#ct100_date")

たとえば、ソースを表示し、レンダリングされた HTML でテキスト ボックス コントロールを見つけると、次のようになります。

<input type="text" id="ct100_date" />

ブラウザーで実行されている Javascript \ jQuery は、正確な コントロールを検索する場合にのみコントロールを見つけますid。したがってid、HTML 内のコントロールの を取得し、(たとえば)で検索します。$("#ct100_date")

于 2012-10-08T21:17:38.987 に答える