Я использую плагин jQuery Form, чтобы связать события отправки для двух форм на одной странице, чтобы они передавались в отдельные сценарии PHP, которые возвращают разметку для отдельных элементов div на странице.
Одна форма обновляет следующую. Я использую «live», поэтому у каждой формы свои события перепривязываются при обновлении:
$(document).ready(function() {
/* Form 1 */
$('#frmSearch').live('submit', function() {
$(this).ajaxSubmit({
target: '#divResults',
url: 'search_div.php'
});
return false;
});
/* Form 2 */
$('#frmResults').live('submit', function() {
$(this).ajaxSubmit({
target: '#divLookup',
url: 'lookup_div.php',
});
return false;
});
});
Пока все хорошо. Каждую форму можно отправлять снова и снова с помощью ajax, и все привязки сохраняются от одной отправки к следующей.
Проблема возникает, когда я пытаюсь связать третью форму и запустить событие отправки в опции «success» второй формы:
/* Form 2 */
$('#frmResults').live('submit', function() {
$(this).ajaxSubmit({
target: '#divLookup',
url: 'lookup_div.php',
success: function(responseText){
$('#frmLookup').submit();
}
});
return false;
});
/* Form 3 */
$('#frmLookup').live('submit', function() {
$(this).ajaxSubmit({
target: '#divMappings',
url: 'mapped_items_div.php',
});
return false;
});
Когда я делаю это, ajaxSubmit успешно выполняется, но затем выполняется отправка формы по умолчанию, в результате чего страница перезагружается. Обратите внимание, что я включаю «return false;» подавить отправку формы по умолчанию, но по какой-то причине она все равно отправляется.
Я обнаружил, что если я «связываю» событие «отправить» формы 3 в функции успеха формы 2 с теми же параметрами, что и «вживую» для формы 3, отправка формы по умолчанию не выполняется. Это, однако, излишне, и если я могу, я бы хотел избежать этого.
Как я могу подавить поведение отправки формы 3 по умолчанию?