
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
-
GridViewの項目編集(初歩)
Microsoft ASP
-
ASP.netで、CheckBoxListのSelectedIndexChangedが発生しません!
Microsoft ASP
-
-
4
ASP.Net 条件により自身を閉じるには
Microsoft ASP
-
5
asp.netでToolTipコントロールを使いたい
Microsoft ASP
-
6
【ASP.NET】マスターページに配置されたボタンのイベントを拾いたい
Microsoft ASP
-
7
ASP.NET TextBox 入力制限
Microsoft ASP
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スイッチが二台あり、別々のア...
-
aspxをhtmlに変換する方法について
-
VB.NETでMSComm が追加できず?
-
vba マージエリアの行数を非表...
-
Windows10を新規インストールし...
-
Windowsで複数のファイルを同じ...
-
onedrive にexcelファイルをア...
-
SJISで、全角文字Aの文字コード...
-
vba 空のデータをSplitする時の...
-
ffftpでファイル取得が0バイト...
-
VBAでPDFを作成する際、同じ名...
-
VBAでPDF作成をしたあと、指定...
-
Excelにて、シート間で、データ...
-
VB2017で、WEBサイト...
-
エクセル VLOOKUP検索で一番新...
-
フォルダの中のフォルダも圧縮...
-
コマンドプロンプトの窓の起動...
-
エクセルに張り付けた写真のフ...
-
SPO2測定
-
高校1年生情報の問題について。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスのクリックで...
-
無効な viewstate
-
指定されるdiv の部分の再読み...
-
VBAで一時中断したプログラムの...
-
getParameterで値が取得できず...
-
Accessの画面更新を一時的に停...
-
コネクション・セッション・ト...
-
DataGridViewのチェックボック...
-
コンピュータへの接続数が最大...
-
ボタンのなかに表示する文字を...
-
エクセルVBAで画面の大きさを取...
-
c# 文字列の最後から1文字削除...
-
ASP.NetのGridViewで任意の行ク...
-
Webページ上のボタン等の位置を...
-
Eclipseでクリーンが出来ない
-
asp.NET初心者です。「 ’Contex...
-
戻ると、記入フォームの内容が...
-
Fancyboxのiframe内に閉じるボタン
-
SPREADでカーソルの位置を1行目...
-
DVD-Rの「セッションを閉じる」...
おすすめ情報