1

送信時にアクションを実行しないようにしたいajaxフォームがあり、さまざまな方法を試しましたが、何も機能しません。私の最初の方法は次のとおりです。

 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つのフォームでは機能しないことです。ここで何かが足りませんか?ありがとう!

4

2 に答える 2

2

特定の問題(つまり、動的に生成されたフォームの挿入)に対処するには、を使用します$.on()。で(基本的に使用するように)document.body親オブザーバーとして使用しない方がよいので、(実際のマークアップを考慮して)次のことが適切です。$.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);

http://jsfiddle.net/5TVGn/2/

于 2012-02-19T02:42:10.563 に答える
1

私はJSfiddleをセットアップしました:

http://jsfiddle.net/XM679/

にラップするのを忘れたの$(document).ready(function() {}ですか?これで問題が解決しない場合: フィドルが機能しているため、さらに支援するにはコンテキストが必要です。

于 2012-02-19T02:32:21.697 に答える