jQuery入力デフォルトアクションを防ぎます
-
27-10-2019 - |
質問
提出されたときにアクションを事前に形成することを防ぎたいと思いますが、何も機能していません。私の最初の方法は次のとおりです。
return false;
そして、私は試しました
event.preventDefault();
イベントはコールバック名またはあなたがそれを呼ぶものであるものです。
function(event) {
event.preventDefault();
};
ここに私が今使用しているHTMLがあります:
<form class="main_search" method="POST" action="ajaxsearch.php">
<input type="text" class="editable" placeholder="Search">
</form>
私が設定したテストJavaScriptが表示されます:
$('.main_search').submit(function(event) {
event.preventDefault(console.log(event)); //Log the event if captured
});
どちらの方法も機能しませんが、奇妙な部分は、ボタンのようなさまざまなもので動作するが、この1つのフォームでは動作しないことです。ここに何かが足りませんか?ありがとう!
解決
あなたの特定の問題に対処するために(つまり、 動的に生成されたフォームの挿入)、 使用する $.on()
. 。使用しないほうがよいです document.body
親の観察者として(As $.live()
基本的に) $.on()
, 、したがって、以下が適切です(実際のマークアップを考慮して):
<div id="searches">
<form class="main_search" method="POST" action="ajaxsearch.php">
<input type="text" class="editable" placeholder="Search">
</form>
</div>
var $main_search = $('.main_search'),
$searches = $('#searches');
$searches.on('submit', '.main_search', function(event) {
event.preventDefault();
console.log(event); //Log the event if captured
});
setInterval(function(){
$searches.append($main_search.clone());
}, 5000);
他のヒント
jsfiddleをセットアップしました:
それを包むのを忘れたのでしょうか $(document).ready(function() {}
?これが問題を解決しなかった場合:フィドルが機能しているので、もっと役立つコンテキストが必要になります。
所属していません StackOverflow