2012-02-19 3 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> 

Heres Теста Javascript настроить:

$('.main_search').submit(function(event) { 
    event.preventDefault(console.log(event)); //Log the event if captured 
}); 

Ни один метод работает, но странная часть является то, что они работают на разные вещи, такие как кнопки, но они не работают в этой форме. Я что-то упустил? Благодаря!

+3

Это странно: ' event.preventDefault (console.log (event)); 'Эти должны быть две строки (' event.preventDefault(); 'не принимает никаких аргументов). –

+0

@JaredFarrish Это была бы веская причина, но все равно не работает –

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

+0

Спасибо, что отлично работает! –

1

Я создал JSfiddle:

http://jsfiddle.net/XM679/

Может быть, вы забыли, чтобы обернуть его в $(document).ready(function() {}? Если это не решило проблему: поскольку скрипка работает - нам нужен ваш контекст, чтобы помочь больше.

Смежные вопросы