jQuery阻止输入默认操作

时间:2012-02-19 02:23:31

标签: javascript jquery preventdefault

我有一个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
});

这两种方法都不起作用,但奇怪的是它们可以处理不同的事情,比如按钮,但它们不适用于这一种形式。我在这里错过了什么吗?谢谢!

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分:1)

我建立了一个JSfiddle:

http://jsfiddle.net/XM679/

你忘了将它包装成$(document).ready(function() {}吗? 如果这没有解决问题:由于小提琴正在工作 - 我们需要你的背景来帮助更多。