マウスクリックでトリガーできるページに画像ボタンがあります。デフォルトでは、無効にしたいEnterキーを押すとトリガーされます。
asp:Button の "UseSubmitBehaviour" 属性について知っていますが、asp:ImageButton で同じことを行う方法はありますか?
マウスクリックでトリガーできるページに画像ボタンがあります。デフォルトでは、無効にしたいEnterキーを押すとトリガーされます。
asp:Button の "UseSubmitBehaviour" 属性について知っていますが、asp:ImageButton で同じことを行う方法はありますか?
ある種の入力コントロールがあり、ユーザーが誤って Enter キーを押したときに Enter キーを押して自動送信したくないと仮定します。その場合、この動作を無効にする各コントロールに JavaScript onkeypress イベントを添付できます。
function disableEnterKey(e)
{
var key;
if (window.event) key = window.event.keyCode; // Internet Explorer
else key = e.which;
return (key != 13);
}
// In your aspx file Page_Load do the following foreach control you want to disable
// the enter key for:
txtYourTextBox.Attributes.Add("OnKeyPress", "return disableEnterKey(event);");
Enter キー送信フォームを完全に無効にする必要がある場合。この場合、ページのタグで OnKeyDown ハンドラーを使用し<body>
ます。
JavaScript コード:
if (window.event.keyCode == 13)
{
event.returnValue = false;
event.cancel = true;
}
JQuery を使用すると、これはよりクリーンで簡単になり、推奨される方法になります。次の拡張機能を作成できます。
jQuery.fn.DisableEnterKey =
function()
{
return this.each(function()
{
$(this).keydown(function(e)
{
var key = e.charCode || e.keyCode || 0;
// return false for the enter key
return (key != 13);
})
})
};
// You can then wire it up by just adding this code for each control:
<script type="text/javascript" language="javascript">
$('#txtYourTextBox').DisableEnterKey();
</script>
コンテンツをasp:Panelに配置する場合、 DefaultButtonプロパティを使用して別のボタンをデフォルトとして設定し、画像ボタンがクリックされないようにすることができます。
<asp:Panel runat="server" ID="pnl_Test" DefaultButton="btn_Test2">
<asp:ImageButton runat="server" ID="btn_Test1" />
<asp:Button runat="server" ID="btn_Test2" />
</asp:Panel>
この例では、通常は btn_Test1 がクリックされる場所でEnterキーを押すと、btn_Test2 がクリックされます。
フォームは、Enterキーを押すと、ページ上で最初に見つかったボタンを実行します。ImageButton
マークアップの最初のボタンではなくなるようにページをさらに下に移動し、 CSSを使用して適切に配置できる場合は、これで問題が解決するはずです。私は先週まったく同じことを修正しました、そしてこれは私のために働きました。JavaScriptが正しく機能する必要がなかったため、このソリューションを使用しました。
Kelsey の回答を使用する (この回答はウィキ化されています)
...しかし、実装する際にはいくつかの点に注意してください。
jQuery をまだ使用していない場合は、単純な古い JavaScript メソッドをお勧めします。その方法を実行する場合は、単に return (keynum != 13) if(true) return true; のようなばかげたことをしないでください。それ以外の場合は false を返します。
コード ビハインドから onkeydown を割り当てる必要はありません。これはマークアップで行うことができ、そうすることでよりクリーンになります。
フォーム全体で Enter キーを無効にしないでください。入力でのみ実行できますが、フォーム全体で実行すると、テキストエリアにキャリッジ リターンを追加できなくなります。
jQuery を使用する場合は、"disableEnterKey" という CSS クラスを追加し、それを無効にするフォーム要素に割り当ててから、準備が整ったドキュメントの $(".disableEnterKey") で Kelsey の jQuery メソッドを呼び出すことをお勧めします。
答えに完全に同意しなくても、SO の誰とも似たような答えをしないでください。たとえ答えが単純で、おそらく何千人もの人々が同じことをしたとしても. それは「コピー」です。これは、「カッター」または「おしゃべり」であることに似ています...これは悪いことです.
(この質問のスレッドがばかげているため、この回答はコミュニティ ウィキ化されています)
代わりに asp:image を使用してください。次に、onclick " javascript:document.getElementById('imageClicked').setAttribute('value', 'true'); document.myform.submit();
"に JavaScript コードを配置します。
非表示フィールドの値を (javascript を使用して) 設定し、画像がクリックされたことをサーバー側のコードに伝えます。
document.getElementById('imageClicked').setAttribute('value', 'true');
次に、サーバーでのポストバック処理の最後に、hiddenField の値をリセットします。
document.getElementById('imageClicked').setAttribute('value', 'true');
次のリンクを参照してください。これは、すべてのデフォルトのボタン送信の問題で解決できます。 http://weblog.kevinattard.com/2011/08/aspnet-disable-submit-form-on-enter-key.html
あなたは次のようなものが欲しい
<form ...>
<!-- some code here -->
<button style='display:none' onclick='return false'>here comes the magic</button>
<button>normal button </button>
</form>
このコードを使用してください
<script type="text/javascript" language="javascript">
$(document).ready(function {
$("#<%=imageClicked.ClientID%>").prop('disabled',true)
});
</script>