
ASP.NET C# VisualStudio2005
Webページ上でテキストボックスをクリックしたらカレンダーを表示させ
カレンダーの日付をクリックでそのテキストボックスに日付を挿入させたいのですが
テキストボックスのクリックでカレンダーを表示させる部分のやり方がわかりません。
テキストボックスのプロパティでAutoPostBackをtrueにしてみましたが
テキストボックスのクリックだけではページを再読み込みするような状態になりませんでした。
WebCalendar for .NETのC1WebCalendarコントロールやASP.NET AJAX Control Toolkitのような
後から追加するコントロール類は使ないのですが、なにかよい方法はないでしょうか?
No.3ベストアンサー
- 回答日時:
ANo.2です
紹介のあった、HPを見てみました ↓
http://www.kawa.net/works/js/jkl/calender.html
遊んでみましたが、簡単に実装できましたよ!
こんな感じでしょうか?↓
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>無題のページ</title>
<!-- 読み込むJavaScriptの指定 //-->
<script type="text/javascript" src="jkl-calendar.js" charset="Shift_JIS"></script>
<script type="text/javascript" src="jkl-opacity.js" charset="Shift_JIS"></script>
</head>
<body>
<!-- カレンダインスタンスの作成 //-->
<script type="text/javascript">
var cal1 = new JKL.Calendar("calid","form1","colname");
</script>
<form id="form1" runat="server">
<div>
<!-- クリック時のメソッド --> <!-- チェンジ時のメソッド -->
<input id="Text1" name = "colname" onclick="cal1.write();" onchange="cal1.getFormValue(); cal1.hide();" style="z-index: 101; left: 11px; position: absolute; top: 10px"
type="text" />
<br />
<!-- カレンダの表示場所 //-->
<div id = "calid"></div>
</div>
</form>
</body>
</html>
VS2005のデザインからは「HTML」タブのInput(Text)を組み込めば
JavaScriptが使えるようです。
(私もJavaScript良く知りませんが ^^;)
がんばってくださいませ
おお、ありがとうございます!
テーブルの中に入れるとちょっと変な動きになりましたが工夫すればなんとかなりそうな気がします。
少ない情報から意図を汲み取って回答して頂き感謝しています。
どうもありがとうございました。
No.2
- 回答日時:
はじめまして
ASP.NET C# でしたら、TextBoxなどのイベントは
サーバー側(IIS)で処理されます。
TextBoxには、Clickイベントが無いので
JavaScriptを埋め込んで、クライアント(IEなど)で
Click時の処理(カレンダ表示など)をしてしまおう
というのが、「redfox63」さんの回答だと思われます。
個人的な意見では、
「JavaScriptが判らない」
「AjaxToolKitが組み込めない」
と言う事であれば、仕様を見直してはいかがでしょう?
例えば...テキストボックスの右横に、ボタンをつけて、カレンダーを開くとか?
(イメージボタンにして、カレンダアイコンを付ければ、それらしく見えると...)
TextBoxクリックにこだわるなら、JavaScriptなどを組み込み必要があるでしょう
この回答への補足
アドバイスありがとうございます。
> TextBoxには、Clickイベントが無いので
> JavaScriptを埋め込んで、クライアント(IEなど)で
> Click時の処理(カレンダ表示など)をしてしまおう
> というのが、「redfox63」さんの回答だと思われます。
なるほど、砕いた説明ありがとうございます。
しっかり理解できました。
> 例えば...テキストボックスの右横に、ボタンをつけて、カレンダーを開くとか?
その方法だととっても簡単なんですけどね。
JavaScriptを勉強しながらでも(時間はないんですが)TextBoxクリックにこだわってやらないといけないんです。
http://www.tohoho-web.com/js/index.htm
上記サイトの基本編を見たら記述がC言語っぽいのでJavaScriptも
簡単なものならなんとかなるかもと思い、チャレンジしています。
http://www.kawa.net/works/js/jkl/calender.html
このサイトのカレンダーの組み込み方がわかれば簡単に出来るとは思うんですけど、
使い方を読んでもまだ理解出来ないんです。
No.1
- 回答日時:
クライアントスクリプトを仕込まないと無理なようです
System.Web.UI.WebControls.TextBoxには Clickイベントがありませんので …
TextBoxのAutoPostBackはテキストが変更されて他のコントロールにフォーカスが移動した場合にPostBackが発生します
カレンダーはSystem.Web.UI.WebControls.Calenderクラスならいいのでしょうか?
テキストボックスと カレンダーを配置します
カレンダーのVisbleプロパティをFalseに設定します
Page_Loadイベントで
dim ss as String
Dim cs As ClientScriptManager = Page.ClientScript
ss = "<script type='text/javascript'>" & _
"function myClick() {" & _
" document.forms[0].submit();" & _
"}" & _
"</script>"
if Not cs.IsClientScriptBlockRegistered("myClickScript") Then
cs.RegisterClientScriptBlock(Me.GetType(), "myClickScript", ss)
End If
ss = "<script type='text/javascript'>" & _
" document.getElementById('TextBox1').onclick = myClick();" & _
"</script>"
If Not cs.IsStartupScriptRegistered("myScript") Then
cs.RegisterStartupScript(Me.GetType(), "myScript", ss)
End If
' テキストボックスがクリックされた場合の処理
If IsPostBack And Calendar1.Visible = False Then
Calendar1.Visible = True
End If
と記述します
カレンダーの選択日付が変更された場合のイベントSelectionChangedで
TextBox1.Text = Calender1.SelectedDate.ToShortDateString
Calender1.Visible = False
と記述します
これでテキストボックスをクリックしたら カレンダーが表示
カレンダーで選択日付が変更されたらカレンダーを非表示
に出来ます
同じ日がクリックされた場合の対処や、他にポストバックするコントロールがある場合はスクリプトのmyClick()を変更する必要があるでしょう
この回答への補足
回答ありがとうございます。
コードまで書いて頂いてとても有り難いのですが、これってVBなんでしょうか?
> クライアントスクリプトを仕込まないと無理なようです
> System.Web.UI.WebControls.TextBoxには Clickイベントがありませんので …
「System.Web.UI.WebControls.TextBox」とはテキストボックスの正式名でしょうか?
ツールボックスの標準の中にあるTextBoxを使っています。
そのTextBoxのプロパティウィンドウでイベントを選びましたがおっしゃる通りClickイベントはありませんでした。
> カレンダーはSystem.Web.UI.WebControls.Calenderクラスならいいのでしょうか?
すいません。「System.Web.UI.WebControls.Calenderクラス」とはツールボックスの中の標準の中にあるCalenderコントロールの事でいいのでしょうか?
カレンダーも後から追加して使うものでなければいいのです。
ここ
http://codezine.jp/a/article/aid/2037.aspx
や、ここ
http://www.atmarkit.co.jp/fdotnet/dotnettips/575 …
に紹介されているような便利なものは利用出来ないのです。
あと、コード中に「script type='text/javascript」というのが出て来ていますね。
javascriptもVB同様さっぱりわからないのです。
スタイルシートみたいな使い方なんでしょうか?
実のところC#もほとんどわからないのですが、なんとかC言語っぽく書いても「デバッグ開始」ボタンで実行出来るのでC#を使っています。
javascriptでカレンダーの表示・非表示に関しては
http://www.kawa.net/works/js/jkl/calender.html
上記サイトを見つけたのですが、使い方というか組込み方というか、
わからないので使えないのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Webページ上のボタン等の位置を移動したい。
Microsoft ASP
-
ASP.netで、CheckBoxListのSelectedIndexChangedが発生しません!
Microsoft ASP
-
ASP.Net 条件により自身を閉じるには
Microsoft ASP
-
-
4
GridViewの項目編集(初歩)
Microsoft ASP
-
5
親ウインドのASPをリロードさせたい
JavaScript
-
6
ASP.NETとC#でWebフォームを呼び出したり閉じたりする方法について
Microsoft ASP
-
7
GridViewからチェックボックスでデータを選択し、次のページへ送信する動作について
Microsoft ASP
-
8
ASP.NETのWebフォームでカレンダーを
Microsoft ASP
-
9
asp.netでToolTipコントロールを使いたい
Microsoft ASP
-
10
asp.netにてgridviewの列を動的にボタンやチェックボックスを追加して実装したいのですが具
Microsoft ASP
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
指定されるdiv の部分の再読み...
-
テキストボックスのクリックで...
-
DataGridViewのチェックボック...
-
VBAで一時中断したプログラムの...
-
getParameterで値が取得できず...
-
コネクション・セッション・ト...
-
コンピュータへの接続数が最大...
-
ブラウザの×(閉じる)ボタンの...
-
戻ると、記入フォームの内容が...
-
VBAで特定のテキストボックスを...
-
Accessの画面更新を一時的に停...
-
複数選択のListBoxでClickイベ...
-
VBのこのコードの意味を教えて...
-
ASP.net Button がSafariで丸く
-
formの送信ボタンをテキストに...
-
ひとつの検索窓で複数の検索サ...
-
C# Enterキーの動作について
-
初期状態に戻す方法
-
SPREADでカーソルの位置を1行目...
-
【ASP2.0】TextBoxのフォーカス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスのクリックで...
-
JavaScript の書き方、どの方法...
-
type属性とlanguage属性の違い...
-
無効な viewstate
-
指定されるdiv の部分の再読み...
-
onloadにsessionの値を渡したい
-
エンターキーを押したときに関...
-
VBAで一時中断したプログラムの...
-
画面遷移が不正ですと表示されます
-
getParameterで値が取得できず...
-
コネクション・セッション・ト...
-
Accessの画面更新を一時的に停...
-
c# 文字列の最後から1文字削除...
-
DVD-Rの「セッションを閉じる」...
-
ページングが大量発生する原因...
-
コンピュータへの接続数が最大...
-
複数選択のListBoxでClickイベ...
-
HTMLボタンの文字色を変え...
-
PageLoadの後にJavascript実行...
-
ボタンのなかに表示する文字を...
おすすめ情報