2012-02-19 6 views
1

私はAjaxフォームを持っています。投稿時にアクションを実行することを防ぎたいと思っています。jQueryはデフォルトの入力アクションを無効にします

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

+3

これは奇妙です: ' event.preventDefault(console.log(event)); 'これらは2行でなければなりません(' event.preventDefault(); 'は引数をとりません)。 –

+0

@JaredFarrishそれはいい理由ですが、それでも動作しません。 –

+2

私はそれが*理由だとは言わなかった、私はこれが奇妙だと言った*。さもなければ、私はそれを*回答*として掲示したでしょう。 ';)' –

答えて

2

具体的な問題(動的に生成されたフォームを挿入する)を処理するには、$.on()を使用してください。以下が適切であるように、あなたは(あなたの実際のマークアップを考慮して)、$.on()で($.live()としては基本的にありません)親オブザーバーとしてdocument.bodyを使用していない方がいいでしょう:

<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/

+0

ありがとう、素晴らしい作品! –

1

私はJSfiddleを設定します。

http://jsfiddle.net/XM679/

あなたは$(document).ready(function() {}にそれをラップすることを忘れていませんか? これで問題が解決しなかった場合:フィドルが機能しているので、より多くのことを助けるためにあなたの文脈が必要です。

関連する問題