Wpis z mikrobloga

Taki problem: muszę przed wysłaniem formularza przeprowadzić pewien test na serwerze, i w jego wyniku zdecydować, co zrobić z formularzem. Robię to tak:

$form = $('#form');
function onSubmit() {
var daneFormularza = {}; // w tej chwili niewazne
$.post(
'http://serwer/sprawdz-formularz',
daneFormularza,
function(response) {
if (response.profilExists && confirm('Profil istnieje, kontynuować wysyłanie?')) {
// przypadek 1
} else if (!response.profilExists && confirm('Profil nie istnieje, utworzyć nowy?')) {
// przypadek 2
}
// przypadek 3 - nic się nie dzieje
}
)

return false;
}

$form.submit(onSubmit);

Oczekiwane działanie to dla :
- przypadek 1: wysłać formularz jak jest
- przypadek 2: zmienić atrybut action formularza i wysłać
- przypadek 3: nic nie robić

Przypadki 1 i 2 byłoby najłatwiej wykonać przez odpalenie $form.submit() - tylko, że to mi po prostu triggeruje jeszcze raz funkcję sprawdzającą - która na końcu ma return false i nic się nie wysyła.
Próbowałem zrobić coś takiego:

$form.unbind('submit', onSubmit);
$form.submit();

Ale coś takiego w ogóle nie działa - formularz się nigdzie nie wysyła.

Pytania:
- jak przywrócić domyślną obsługę zdarzenia?
- jakiś inny pomysł na realizację (przypadek 1) i (przypadek 2)

#javascript #webdev
  • 2