C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: マスターページ使用画面のjQueryのDatePicker


(過去ログ 95 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■56576 / inTopicNo.1)  マスターページ使用画面のjQueryのDatePicker
  
□投稿者/ あや (7回)-(2011/01/20(Thu) 14:02:08)

分類:[ASP.NET (C#)] 

はじめまして。
いつも大変参考にさせていただいております。

表題の件で質問させてください。

jQueryにてdatepickerでカレンダー表示を使用する際、通常は


[スクリプト]
$("#txtUpdDate").datepicker({・・・・・})

[HTML]
<asp:TextBox ID="txtUpdDate" runat="server" Width="80px" MaxLength="10" CssClass="ime-disabled"></asp:TextBox>


でうまくいくのですが、マスターページを使用するとID名が
「ctl00$ContentPlaceHolder1$txtUpdDate」となりIDが一致せずカレンダーが動作しません。

HTMLのINPUTだとうまくいくのですが今度は値をうまく取得できずに困っています。
(runat="server"を上記INPUTタグに不可しても結局ID名が変わります・・・)

通常のJavaScriptだとプログラムから付加するような Attributes.Add("","")やRegisterClientScriptBlock("","")でうまくいくのですが、
スクリプトにIDを指定するとなるとどのようにしたらいいのかがわかりません。

このような場合はどのように実装するのでしょうか?

ご教授よろしくお願いいたします。


引用返信 編集キー/
■56583 / inTopicNo.2)  Re[1]: マスターページ使用画面のjQueryのDatePicker
□投稿者/ やじゅ (1820回)-(2011/01/20(Thu) 18:09:22)
やじゅ さんの Web サイト
No56576 (あや さん) に返信
> マスターページを使用するとID名が
> 「ctl00$ContentPlaceHolder1$txtUpdDate」となりIDが一致せずカレンダーが動作しません。

過去ログで「ctl00」で検索
マスターページを使った場合のJavaScriptからの参照
http://bbs.wankuma.com/index.cgi?mode=al2&namber=27369&KLOG=50
引用返信 編集キー/
■56591 / inTopicNo.3)  Re[1]: マスターページ使用画面のjQueryのDatePicker
□投稿者/ もりお (319回)-(2011/01/21(Fri) 00:55:42)
2011/01/21(Fri) 01:38:47 編集(投稿者)
No56576 (あや さん) に返信

> でうまくいくのですが、マスターページを使用するとID名が
> 「ctl00$ContentPlaceHolder1$txtUpdDate」となりIDが一致せずカレンダーが動作しません。

ID における ctl00 がマスターページで、ContentPlaceHolder1 がコンテンツページですかね。
マスターページを使用するコンテンツページに TextBox コントロール txtUpdDate を配置して
いらっしゃいますか。

> このような場合はどのように実装するのでしょうか?

インライン式で TextBox.ClientID プロパティを参照するとよいです。
対象の TextBox を参照する必要があるので、JavaScript をコンテンツページに記述するか、
マスターページに記述するかによって実装は異なります。
コンテンツページに JavaScript を記述するならば、こんな感じです。

[WebForm.aspx]

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
  <asp:TextBox ID="txtUpdDate" runat="server" Width="80px" MaxLength="10" CssClass="ime-disabled"></asp:TextBox>
  <script type="text/javascript">
    $("#<%= txtUpdDate.ClientID %>").datepicker({・・・・・})
  </script>
</asp:Content>

マスターページに JavaScript を記述するならば、こんな感じです。

[Site.Master]

<form id="form1" runat="server">
  <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
  </asp:ContentPlaceHolder>
</form>
<script type="text/javascript">
  $('#<%= ContentPlaceHolder1.FindControl("txtUpdDate").ClientID %>').datepicker({・・・・・})
</script>

引用返信 編集キー/
■56614 / inTopicNo.4)  Re[2]: マスターページ使用画面のjQueryのDatePicker
□投稿者/ あや (8回)-(2011/01/21(Fri) 16:15:10)
No56583 (やじゅ さん) に返信

> 過去ログで「ctl00」で検索
> マスターページを使った場合のJavaScriptからの参照
> http://bbs.wankuma.com/index.cgi?mode=al2&namber=27369&KLOG=50

返信ありがとうございます。

過去の掲示板も見ていたのですがこのページにはたどり着きませんでした。
スクリプトでは「document.forms[0].ctl00_ContentPlaceHolder1_TextBox1.value」で値が取得できるんですね。


今回は「$('#<%= ContentPlaceHolder1.FindControl("txtUpdDate").ClientID %>').datepicker({・・・・・})にて対応させていただきます。

ありがとうございました。

引用返信 編集キー/
■56615 / inTopicNo.5)  Re[2]: マスターページ使用画面のjQueryのDatePicker
□投稿者/ あや (9回)-(2011/01/21(Fri) 16:29:48)
No56591 (もりお さん) に返信
> 2011/01/21(Fri) 01:38:47 編集(投稿者)
>
> ■No56576 (あや さん) に返信
>
>>でうまくいくのですが、マスターページを使用するとID名が
>>「ctl00$ContentPlaceHolder1$txtUpdDate」となりIDが一致せずカレンダーが動作しません。
>
> ID における ctl00 がマスターページで、ContentPlaceHolder1 がコンテンツページですかね。
> マスターページを使用するコンテンツページに TextBox コントロール txtUpdDate を配置して
> いらっしゃいますか。
>

返信ありがとうございます。
言葉足らずで申し訳ありません、その方法が知りたいのです。


>>このような場合はどのように実装するのでしょうか?
>
> インライン式で TextBox.ClientID プロパティを参照するとよいです。
> 対象の TextBox を参照する必要があるので、JavaScript をコンテンツページに記述するか、
> マスターページに記述するかによって実装は異なります。
> コンテンツページに JavaScript を記述するならば、こんな感じです。
>
> [WebForm.aspx]
>
> <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
> <asp:TextBox ID="txtUpdDate" runat="server" Width="80px" MaxLength="10" CssClass="ime-disabled"></asp:TextBox>
> <script type="text/javascript">
> $("#<%= txtUpdDate.ClientID %>").datepicker({・・・・・})
> </script>
> </asp:Content>
>
> マスターページに JavaScript を記述するならば、こんな感じです。
>
> [Site.Master]
>
> <form id="form1" runat="server">
> <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
> </asp:ContentPlaceHolder>
> </form>
> <script type="text/javascript">
> $('#<%= ContentPlaceHolder1.FindControl("txtUpdDate").ClientID %>').datepicker({・・・・・})
> </script>

すごいです!

> $("#<%= txtUpdDate.ClientID %>").datepicker({・・・・・})

や、

> $('#<%= ContentPlaceHolder1.FindControl("txtUpdDate").ClientID %>').datepicker({・・・・・})


で期待通りの動きを実装することができました!

こんなIDの指定方法ができるんですね!
勉強になります。

ありがとうございました!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -