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も見ています
-
【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
ロボットの住む世界で流行ってる罰ゲームとは?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Webページ上のボタン等の位置を移動したい。
Microsoft ASP
-
TextChangeイベントが発生しない
JavaScript
-
VB.NETで<Input>タグ、<textarea>タグに値を代入するには?
Visual Basic(VBA)
-
-
4
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
5
VB.net 任意の例外を発生させるには・・・
Visual Basic(VBA)
-
6
ASP.NETのコントロールの値をJavaScriptで取得
JavaScript
-
7
DataGridViewに複数テーブルのデータをセットしたい
Visual Basic(VBA)
-
8
C#で、テキストボックスの入力について。
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows10にデュアルブートでXP...
-
onedrive にexcelファイルをア...
-
PS4で、「バージョン5.05以上の...
-
バッチファイルで電卓作ったの...
-
エクセルに張り付けた写真のフ...
-
キヤノン アソビカメラ iNSPiC ...
-
エクセルVBAで印刷する書式をク...
-
VB.NETでMSComm が追加できず?
-
お世話になります。 Windows Up...
-
入力フォームのテキストボック...
-
ASP.NetでWebアプリ開発の経験...
-
バッチで当日日付で作成される...
-
高校1年生情報の問題について。
-
VB.NET2017のエディタ画面について
-
python3 足し算の問題
-
SPO2測定
-
エクセルのマクロについて教え...
-
インドe-Visa 承認書のApplicat...
-
SPIの非言語の割合と比が難しく...
-
SPIの対策は参考書でやるべきか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスのクリックで...
-
無効な viewstate
-
指定されるdiv の部分の再読み...
-
type属性とlanguage属性の違い...
-
コネクション・セッション・ト...
-
Accessの画面更新を一時的に停...
-
aspxをhtmlに変換する方法について
-
HTTPリクエストヘッダーの設定...
-
c# 文字列の最後から1文字削除...
-
DataGridViewのチェックボック...
-
HTMLボタンの文字色を変え...
-
VBAで一時中断したプログラムの...
-
複数選択のListBoxでClickイベ...
-
PageLoadの後にJavascript実行...
-
Webページ上のボタン等の位置を...
-
asp.NET初心者です。「 ’Contex...
-
DVD-Rの「セッションを閉じる」...
-
ASPで画面間のパラメタ受け渡し
-
同じソリューション内の別のプ...
-
画面遷移が不正ですと表示されます
おすすめ情報