
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で質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access DTPickerの初期表示月を変えたい 1 2022/08/02 08:55
- Visual Basic(VBA) Vba テキストボックスの文字列をボタンで入力するとテキストボックスの端の文字列が更新されない 2 2022/05/21 23:32
- その他(プログラミング・Web制作) 出務表のwebページを作りたいです 3 2022/04/05 15:35
- Access(アクセス) アクセス 意図せずサブプロシージャを移動してしまうのを止めたい 1 2022/09/02 09:19
- Word(ワード) ワード2023でテキストボックス内の数字が勝手に変わってしまう 1 2023/02/09 14:47
- Visual Basic(VBA) excel vba でユーザーフォーム入力ができない 2 2022/12/12 14:42
- その他(Microsoft Office) EXCELでバーコードを作成すると白くなってコードが見えません 1 2022/04/04 14:24
- Visual Basic(VBA) テキストボックス1の値に対するテキストボックス2に表示する値 1 2022/04/05 14:35
- その他(パソコン・スマホ・電化製品) ワードでテキストボックス内の文字を連動させない方法 2 2023/02/09 16:56
- Word(ワード) Wordの図形の書式タブが表示されなくなってしまいました... 1 2022/11/20 21:15
このQ&Aを見た人はこんなQ&Aも見ています
-
ASP.Net 条件により自身を閉じるには
Microsoft ASP
-
ASP.NETとC#でWebフォームを呼び出したり閉じたりする方法について
Microsoft ASP
-
TextChangeイベントが発生しない
JavaScript
-
-
4
GridViewの項目編集(初歩)
Microsoft ASP
-
5
asp.netにてgridviewの列を動的にボタンやチェックボックスを追加して実装したいのですが具
Microsoft ASP
-
6
Webページ上のボタン等の位置を移動したい。
Microsoft ASP
-
7
親ウインドのASPをリロードさせたい
JavaScript
-
8
GridViewからチェックボックスでデータを選択し、次のページへ送信する動作について
Microsoft ASP
-
9
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
10
EXCELファイルの複数ダウンロードについて
Microsoft ASP
-
11
ASP.NETのWebフォームでカレンダーを
Microsoft ASP
-
12
テキストボックスにカレンダー表示して入力方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SJISで、全角文字Aの文字コード...
-
スイッチが二台あり、別々のア...
-
エクセルに張り付けた写真のフ...
-
asp.netにてgridviewの列を動的...
-
phpのファイルがブラウザで開か...
-
onedrive にexcelファイルをア...
-
バッチ(bat)でリストファイルか...
-
Windows10にデュアルブートでXP...
-
連想配列を配列に格納したいで...
-
SPO2測定
-
高校1年生情報の問題について。
-
エクセルのマクロについて教え...
-
インドe-Visa 承認書のApplicat...
-
SPIの非言語の割合と比が難しく...
-
SPIの対策は参考書でやるべきか?
-
LEDで電光掲示板に「A B C D E...
-
One Driveへのアクセス
-
LINE APIからasp.net の web サ...
-
Windows10エンタープライズ版をインス...
-
Ip アドレスて日毎に変わるんで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスのクリックで...
-
無効な viewstate
-
指定されるdiv の部分の再読み...
-
エンターキーを押したときに関...
-
type属性とlanguage属性の違い...
-
<title></title>間になぜかタブ...
-
VBAで一時中断したプログラムの...
-
コネクション・セッション・ト...
-
Accessの画面更新を一時的に停...
-
HTMLボタンの文字色を変え...
-
c# 文字列の最後から1文字削除...
-
コンピュータへの接続数が最大...
-
DVD-Rの「セッションを閉じる」...
-
ボタンのなかに表示する文字を...
-
Eclipseでクリーンが出来ない
-
SPREADでカーソルの位置を1行目...
-
DataGridViewのチェックボック...
-
Webページ上のボタン等の位置を...
-
ASPで画面間のパラメタ受け渡し
-
ACCESS2010 WEBブラウザーコン...
おすすめ情報