- PR -

KeyEnter押下時にButton_Clickイベントを発生させる 使用言語C#

投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-09-19 13:30
引用:

たけくんさんの書き込み (2003-09-19 13:13) より:

で、なぜEnterキー押下でテンプレートのButtonがSubmitされるのかも不思議なところなのですが、どこから解明していけばいいのか難しいところです。


 ボタンがsubmitされるのではなく、form(書式)がsubmit(提出する)されるのです。つまり、「Enter(入力する)」ボタンを押したと言うことは、「『この内容を入力してください』とサーバに提出する」ことなのです。もしくは、「『この内容を入力してください』ということは、『サーバに提出する』ことと同義」、つまり、サーバに提出しなければ入力されないのです。


 テンプレートと思っていても、HTMLにそんなものはありません。HTMLファイルになったときにすべて同一平面上に置かれます。表示されたページのソースを見てみてください。そのImageButtonが、type="submit"なinputとして、一番上にありませんか?だから、そのボタンのイベントが走るのです。試しに、width=0にした(目には見えないが、配置されている)buttonを、ソースの一番上になるように配置してみてください。そのボタンのイベントコードを書かなければ、何も起こらなくなると思います。ちなみに、Visible=Falseだと、HTMLにはき出されないので無効です。

#訳のミス訂正(提供→提出)

[ メッセージ編集済み 編集者: Jitta 編集日時 2003-09-19 13:40 ]
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-09-19 23:21
引用:
<form>で全体を囲ってあるので、画面のどこでもマウスクリックしてEnter
を押下すると、テンプレートのImageButtonがクリックされます。


ImageButtonって<input type="image">だからsubmitボタンと同じように
form内でのEnter押下でsubmitされるはずです。

<input type="image">はimage上でクリックされた座標をポストするので、
本来クリッカブルマップ等の用途で使われています。
そのような使い方をしていないのなら、ImageButtonでなく
IMGタグで代用できないでしょうか?
<img style="cursor:hand">ってすればImageButtonっぽく見えますが。

IMGはサーバコントロールにしてもClickイベントを作成できないので、
<img style="cursor:hand" onclick="document.frm.flgImgPost.value='ON';document.frm.submit();">
<input type="hidden" id="flgImgPost" runat="server">
とすればHiddenコントロールのServerChangeでハンドリングできると思います。
(かなり場当たり的ですが。)

いつの間にかスレッドの件名と逆の内容になってますし、
他の方も言われていますが、問題点が洗い出せていない割りに
仕様が細かすぎると思いますので、自分の技術で解決できる範囲の仕様にしたほうがよいのではないでしょうか。

スキルアップ/キャリアアップ(JOB@IT)