У меня есть кнопка вне формы, которая при нажатии отправляет мою форму. В этой форме есть событие для onSubmit, которое срабатывает, а затем просто выполняет некоторые проверки формы, чтобы убедиться, что поля присутствуют. В конце формы я возвращаю true и ничего не происходит. Кажется, я не могу понять это. Оцените дополнительный набор глаз. Я проверил, что эта функция вызывается и проходит все проверки, просто ничего не происходит. Вот код:
$(document).on('click','.but_addTask',function(e){
e.preventDefault();
$('#addTaskForm').submit();
});
$(document).on('submit','#addTaskForm',function(e){
e.preventDefault();
var description = $('#description').val();
var dueDate = $('#dueDate').val();
if (!$('.taskClientID').length){
alert('Please add client(s) to task');
$('#taskClientSearch').focus();
return false;
}
if (description= = ""){
alert("Please enter a description")
$('#description').focus();
return false;
}
if (!$('.taskAuditorID').length){
alert('Please add owner(s) to task');
$('#taskOwnersSearch').focus();
return false;
}
if (dueDate= = ""){
alert("Please enter a dueDate")
$('#dueDate').focus();
return false;
}
console.info('made it!');
return true;
});



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы уже вызвали e.preventDefault(); в начале обратного вызова, который подавляет поведение события по умолчанию (в этом случае, конечно, это поведение заключается в отправке). К тому времени, когда вы вернете true, будет слишком поздно.
Если вы удалите эту строку, все будет в порядке.
Документы: https://api.jquery.com/event.preventdefault/
OP, вероятно, также не нуждается в preventDefault на кнопке (если только это не тег привязки, а не кнопка).
@AndyG это правда, если кнопка находится за пределами формы, как указано (и действительно является кнопкой). Жаль, что мы не можем видеть HTML. Я всегда нахожу странным, что люди задают вопросы, тесно связанные с графическим интерфейсом, а затем не показывают графический интерфейс,
извините.. не подумал, что это актуально... и это якорная ссылка, а не кнопка
@Дэмиен, без проблем. Поэтому, если это якорь, вам нужен preventDefault() для события click.
e.preventDefault();делает именно то, что должен делать....