2015-10-12 5 views
0

Может кто-нибудь сказать мне, почему этот скрипт не работает.JavaScript/jQuery Callback on ("submit")

Я хочу оповещение для «Я только что представил форму» перед «Представленной формой». Поэтому я использовал обратный вызов, но он все еще прыгает мимо submit.

function formSubmit(callback) { 
    $("form").on("submit", function(e){ 
     e.preventDefault(); 
     alert("I just submitted the form."); 
    }); 
    callback(); 
} 

formSubmit(function() { 
    alert("The form submitted."); 
}); 

HTML

<body> 
    <form> 
     <input type="submit"/> 
    </form> 
</body> 
<script src="https://code.jquery.com/jquery-2.1.3.min.js"></script> 
<script src="js/forTesting.js"></script> 

ответ

1

Вы должны запустить callback функцию в функции JQuery обработчика событий (второй аргумент on. В противном случае, callback будет просто выполнить сразу внутри formSubmit, но alert("I just submitted the form."); будет выполнять только как только произойдет событие отправки.

function formSubmit(callback) { 
    $("form").on("submit", function(e){ 
     e.preventDefault(); 
     alert("I just submitted the form."); 
     callback(); 
    }); 
} 

formSubmit(function() { 
    alert("The form submitted."); 
}); 
+0

Спасибо за подробное объяснение. Я понял это сегодня утром и чувствую себя как дуф. – user37172

+0

@ user37172 Рад, что я мог бы помочь. Не забудьте принять ответ, если вы сочтете это полезным. –

1

Вам необходимо вызвать обратный вызов после предупреждения, а не после привязки обработчика submit.

+0

Большое спасибо. Я просто понял это. ;) – user37172