Domanda

Ho una forma AJAX che vorrei impedire di preformare un'azione quando sono stato inviato e ho provato numerosi metodi e nulla funziona. Il mio primo metodo è stato:

 return false;

E poi ho provato

event.preventDefault();

L'evento è il nome di callback o come lo chiami.

function(event) {
    event.preventDefault();
};

Ecco l'HTML che sto usando in questo momento:

<form class="main_search" method="POST" action="ajaxsearch.php">
    <input type="text" class="editable" placeholder="Search">
</form>

Ecco il test javascript che ho impostato:

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

Nessuno dei due metodi funziona, ma la parte strana è che funzionano su cose diverse come i pulsanti ma non funzionano su questa forma. Mi manca qualcosa qui? Grazie!

È stato utile?

Soluzione

Per affrontare il tuo problema specifico (cioè, inserire una forma generata dinamicamente), uso $.on(). È meglio non usare document.body come osservatore madre (come $.live() essenzialmente lo fa) con $.on(), quindi quanto segue sarebbe appropriato (considerando il tuo effettivo markup):

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

Altri suggerimenti

Ho impostato un jsfiddle:

http://jsfiddle.net/xm679/

Potresti essere dimenticato di avvolgerlo $(document).ready(function() {} ? Se questo non ha risolto il problema: poiché il violino funziona, avremmo bisogno del tuo contesto per aiutarti di più.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top