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
});

这两种方法都不起作用,但奇怪的是它们可以在不同的东西上工作,比如按钮,但不能在这种形式上工作。我在这里错过了什么吗?谢谢!

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 回答