- PR -

Enterキーが押されたテキストボックスによってサーバ側の処理を切り替える(Master Pageを利用した場合)

1
投稿者投稿内容
Jony
会議室デビュー日: 2007/05/28
投稿数: 2
投稿日時: 2007-05-28 21:16
初めて投稿させていただきます。
VisualStudio 2005にて、C#.NETとASP.NETを使用して
Webアプリケーション開発を行っています。

以前紹介された記事
(http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=14892&forum=7)

の処理を参考にさせていただき、複数のSubmitボタンと複数のテキストボックス
があるフォームにて、Enterキーが押されたテキストボタンによって、
それぞれのSubmitボタンにfocusするという処理を作成しました。

しかし今回、上記のぼのぼのさんの記事の処理でMaster Pageを利用したところ、
処理が動作しないという現象が発生しました。

.NET歴4ヶ月なので、よくわかってない部分が多いのですが、
一つ発見したことは、デバッグしたときにIEでソースコードをみると
SubmitボタンのIDが"Button1"から"ct100_Button1"に自動的に変更されて
いました。もちろん、これはMaster Pageを利用しなかった場合には
変更されません。

またHTMLのInput Submitボタンを利用した場合も変更されません。

ASPのボタンがビルドされHTML上でInput Submitボタンになったときに
IDが変更されます。

今回下記の2つの条件を含んだ上で、テキストボックスでENTERキーを押したときに
Submitボタンにfocusするという処理を作成したいと考えています。

・SubmitボタンのリスナーはServer側。よって、ASPのボタンを利用したいと考えています。

・Master Pageを利用する


どなたか、良い案がある方いませんか?
ご教授よろしくお願いします。

[ メッセージ編集済み 編集者: Jony 編集日時 2007-05-28 21:19 ]

[ メッセージ編集済み 編集者: Jony 編集日時 2007-05-29 21:37 ]
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2007-05-29 00:13
うあ、懐かしいスレにリンクが張られてるw

当時はプロジェクトの都合でvbscriptを使ってましたが、今ではすっかりjavascript派です。
vbscriptはIEでしか動かないという理由の他に、onclick等に直接埋め込む時、
javascriptの方がセミコロン区切りで複数の構文を書けるのが便利なので、
プロジェクト上の制約が無ければjavascriptの方をお薦めします。

で、リンク先のnanbuさんのコード、以下の2ヶ所を変えてみてください。

1.doTestのdocument.Form1[type].focus();の部分を、document.getElementById(type).focus();に変える
2.divのonkeydownのdoTest('Button1')の部分を、doTest('<%=Button1.ClientID %>')に変える
Jony
会議室デビュー日: 2007/05/28
投稿数: 2
投稿日時: 2007-05-29 21:34
ぼのぼのさんご返答ありがとうございます。

ぼのぼのさんが教えてくれたとおり、JavaScriptで
nanbuさんのコードに変更をくわえた結果、
本当に簡単に動作が確認できました。

本当に感謝です。ありがとうございました。

あと、なぜかタイトルが"Master Page" になっているので
変更しときます。
1

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