Webシステムで、EnterキーでのSubmitを制御したいという要望はよくあります。
色々と方法はありますが、JavaScriptで制御させる方法が多いと思います。
後は、ASP.netのコントロールであるButtonコントロールを使わず、htmlタグのbuttonタグを使う方法や、
ダミーボタンを用意し、FormのDefaultButtonに設定する、などです。
※ダミーボタンを作成する際は、ButtonコントロールのプロパティであるVibibleをFalseにしてはいけません。
VibibleがFalseになっているコントロールは、htmlに変換する際に対象外となるからです。
ただ、そのような要望が、開発の終盤に出てくると、修正も大変ですよね。
ASP.netを利用しているのであれば、Site.Masterに以下のような記載をすると、修正が1か所で済みます。
<div id="body"> <asp:Panel ID="PanelDummy" runat="server" DefaultButton="ButtonDefault"> <asp:ContentPlaceHolder runat="server" ID="FeaturedContent" /> <asp:ContentPlaceHolder runat="server" ID="MainContent" /> <asp:Button ID="ButtonDefault" runat="server" Text="" Width="0" Height="0" OnClientClick="return false;" style="visibility:hidden;" /> </asp:Panel> </div>ContentPlaceHolderの部分は各画面で置き換えられるコンテンツ部分ですが、
そのコンテンツ部分をPanelコントロールで括っています。
そして、そのPanelにはデフォルトボタンが設定されていて、
そのボタンは OnClientClick="return false;" でSubmiteを無効にしています。
非表示についても、ボタンのプロパティではなく、CSSのstlye設定を利用しているところもポイントです。
EnterキーでのSubmit(ポストバック)は、利用する人によって、「必要だ」という意見もあれば、
「不要だ」という意見もあり、現場では正直困ってしまう事もあります・・・・。
ASP.net
0 件のコメント:
コメントを投稿