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も見ています
-
「どうして捨てられないの?」前妻の物を捨てられない男性の心理って?
前妻の物を捨てられない理由に加え、捨てるための手段はあるのかを専門家に聞いてみた!
-
Webページ上のボタン等の位置を移動したい。
Microsoft ASP
-
VB.NETで<Input>タグ、<textarea>タグに値を代入するには?
Visual Basic(VBA)
-
TextChangeイベントが発生しない
JavaScript
-
-
4
DataGridViewに複数テーブルのデータをセットしたい
Visual Basic(VBA)
-
5
ASP.NETのコントロールの値をJavaScriptで取得
JavaScript
-
6
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
7
小数点を含む数値かどうか判断の判断方法
Visual Basic(VBA)
-
8
ASP.NETでのメッセージ画面を出すには
Microsoft ASP
-
9
【VB】コンボボックスにデータベースから取り出した値を入れたい
Visual Basic(VBA)
-
10
<VB.NET>INSERT文でDBにデータを入れたい
Visual Basic(VBA)
-
11
DropDownListの初期値の設定(C#)
その他(プログラミング・Web制作)
-
12
テキストボックスに今日の日付を入力
Microsoft ASP
-
13
C# DataGridViewのセルを改行禁止にするには?
C言語・C++・C#
-
14
visual studio でインデントを自動的に揃えるショートカットキー
その他(プログラミング・Web制作)
-
15
SQLのエラー(~付近に不適切な構文があります)
SQL Server
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
無効な viewstate
-
テキストボックスのクリックで...
-
コネクション・セッション・ト...
-
Accessの画面更新を一時的に停...
-
コンピュータへの接続数が最大...
-
ACCESS2010 WEBブラウザーコン...
-
getParameterで値が取得できず...
-
asp.NET初心者です。「 ’Contex...
-
VBAでHTTPログイン
-
DataGridViewのチェックボック...
-
ボタンをクリックした時に、入...
-
異なるformのsubmitボタンを同...
-
Eclipseでクリーンが出来ない
-
HTTPリクエストヘッダーの設定...
-
【ASP2.0】TextBoxのフォーカス...
-
ASP.Net 条件により自身を閉じ...
-
スマホで、左右にスワイプして...
-
IEの閉じるボタンを消す方法
-
WCFのwsDualHttpBindingについて
-
<FORM> </FORM> の中に さらに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスのクリックで...
-
無効な viewstate
-
指定されるdiv の部分の再読み...
-
エンターキーを押したときに関...
-
getParameterで値が取得できず...
-
Accessの画面更新を一時的に停...
-
コネクション・セッション・ト...
-
DataGridViewのチェックボック...
-
VBAで一時中断したプログラムの...
-
c# 文字列の最後から1文字削除...
-
Webページ上のボタン等の位置を...
-
リンクでPOSTデータを送信する...
-
aspxをhtmlに変換する方法について
-
submitボタンにvalue属性の値で...
-
Eclipseでクリーンが出来ない
-
先程、携帯でネットをしていた...
-
ASPで画面間のパラメタ受け渡し
-
同じソリューション内の別のプ...
-
asp.NET初心者です。「 ’Contex...
-
画面遷移が不正ですと表示されます
おすすめ情報