2012-02-12 13 views
6

Mam formularz + układ tak:Dlaczego zdarzenie przesyłania formularza nie jest uruchamiane (jQuery)?

<form ...> 
    <div id="editor"> 
     [form html] 
     <input type="submit" value="Submit form" /> 
    </div> 
</form> 

i następujący skrypt:

$(function() { 
    var form = $('#editor').parents('form'); 
    alert(form.length); // this alerts "1" 
    $(document).on('submit', 'form', function() { 
     alert('document form submit fired'); // this works as expected (alerts) 
    }); 
    form.on('submit', function() { 
     alert('selected form submit fired'); // this is never alerted 
    }); 
}); 

Ta forma nie jest załadowany za pośrednictwem ajax. Po załadowaniu strony pierwsze okno dialogowe ostrzeże "1". Jednak przy wysyłaniu formularza uruchamiany jest tylko jeden alert - taki, który uruchamia się dla wszystkich formularzy w dokumencie.

Dlaczego tak się stanie?

+0

Działa dla mnie w jsFiddle http://jsfiddle.net/sERhZ/ Może coś jest nie tak z twoim html, a nawet instalatorem? –

+0

W rzeczywistości, biorąc pod uwagę procedury obsługi, ta, która została zastosowana bezpośrednio do formularza, powinna (i jest) najpierw zostać uruchomiona. Czy to twój pełny kod? Czy są jakieś błędy w konsoli przeglądarki? – tvanfosson

+0

Założę się, że masz 'return false' na pierwszej obsłudze, co uniemożliwi drugi atak. Czy mam rację? – gdoron

Odpowiedz

7

It does work. Dzieje się coś innego, co uniemożliwia ostrzelanie drugiego alarmu.

+0

Masz rację. W kodzie był inny kod. Zastanawiałem się, co to może być. Okazuje się, że miałem błąd, gdy nadpisałem $ .validator.settings.highlight i $ .validator.settings.unhighlight. – danludwig

0

Twój selektor formularza jest nieprawidłowy.

spróbować zrobić to

$("form").on('submit', function() { 

Dość pewien, że to powinno działać

Właściwie jeśli nic nie jest ładowany przez AJAX lub dynamicznie poprzez javascript

Można po prostu zrobić

$("form").submit(function() { 

EDYTOWANIE

Zdrap mój wyżej. Nie widzę, żebyś ustawił wartość formularza. Sprawdź http://jsfiddle.net/s3fvM/1/. Wydaje się, że działa mi dobrze. obaj strzelają i ostrzegają.

+1

'form' jest zmienną trzymającą element formularza zawinięty w jQuery. – tvanfosson

+0

Teraz widzę to teraz. Po prostu zrobiłem to w jsfiddle i oba zostały zwolnione. [http://jsfiddle.net/s3fvM/](http://jsfiddle.net/s3fvM/1/) – Henesnarfel

+0

"scrathed your above" Czy zgadzasz się z tą edycją? – gdoron

Powiązane problemy