入力テキストがあり、アイテムを提案するために先行入力プラグインを適用しますが、入力テキストでEnterキーを押すと、フォームが送信されます。
Twitter bootstrap typeaheadプラグインを使用してフォームの送信を防ぐにはどうすればよいですか?
IDを追加し、次のように入力のキーダウンイベントを削除するだけで、その特定の入力をターゲットにできます。
[〜#〜] js [〜#〜]
$(document).ready(function() {
$('form input').keydown(function(event){
if(event.keyCode == 13) {
event.preventDefault();
return false;
}
});
});
最初の答えは、おそらくtypeaheadプラグインを更新したために機能しませんでしたが、typeheadによって作成された「代替」入力を使用して問題を解決しました。
$(".Twitter-typeahead > input").focus(function(){
//disable btn when focusing the input
$("#my_submit_button").prop('disabled', true);
}).blur(function(){
//enable btn when bluring the input
$("#my_submit_button").prop('disabled', false);
});
documentation によると、オプションconfirmKeys
をreturn(13)以外の値に設定できます。
$('input').tagsinput({
confirmKeys: [188, 32, 39],
});
ただし、これを実行するためのより賢い方法は、 Enter時にフォームを送信しないようにする です。
これに取り組むために私が見つけた最善の方法は、送信入力を使用しないことです。代わりにボタン入力を使用し、クリックされたときにフォームを送信するためにいくつかのjsを追加します。
$('#my_submit_button').click(function(){
$(this).parents('form').submit();
});
CodeIgniterを使用したプロジェクトで同じ問題が発生し、bootstrapここで解決策が見つかり、機能します。
次のように、フォームにonsubmit="return false;"
を追加するだけです。
<form id="frmcrud" method="post" onsubmit="return false;">