Во-первых, есть пара вещей, о которых вы должны знать:
Каждый раз, когда вы хотите привязать событие к элементу DOM сразу, вам следует убедиться, что страница полностью загружена. Если вы сомневаетесь, оберните ваш код внутри
$(document).ready(function() { /* code to execute after page load */ });
.
Кроме того, метод .trigger ("submit") не работает, если установлен атрибут name элемента input [type = "submit"] на значение «представить». Поскольку .submit () , вызываемый без аргументов, является ярлыком для .trigger ('submit') , тогда каждый раз, когда вы вызываете метод JQuery .submit () для элемент, который вы хотите убедиться, и присвоить входному параметру name атрибут, отличный от «submit».
Теперь, чтобы ответить на ваши вопросы; Сначала о том, является ли возврат false предпочтительным способом отправки формы вручную, обычно ответ отрицательный. Причина в том, что возвращение false делает три вещи, и вы обычно не хотите делать все из них. Он предотвращает поведение браузера по умолчанию для этого события, также останавливает всплывающее событие и сразу же завершает работу, выходя из функции. Обычно, вы, вероятно, просто хотите либо event.preventDefault () , либо event.stopPropagation () … или даже отменить привязку к событию в целом. В этом случае, на мой взгляд, возврат false, а не вызов соответствующих вечерних методов, похоже, запутывает смысл вашего кода.
Если вам также нужно запретить действие браузера по умолчанию для события submit , вы можете использовать альтернативный метод запуска JQuery:
$('#mainform').triggerHandler('submit');
.
Хотя сам метод валидатора, вероятно, должен быть там, где вы вызываете
form.submit () в случае, если ошибок нет. Он также должен быть там, где вы обрабатываете отправку формы, так как это, так сказать, привратник.
В общем, если вы собираетесь использовать плагин Validator, вы должны следовать его собственным соглашениям. Убедитесь, что форма выполняет отправку по умолчанию, добавив name = "submit" к кнопке отправки, а затем удалите весь имеющийся у вас код JQuery и замените его следующим примером из документации Validator:
$("#mainform").validate({
submitHandler: function(form) {
form.submit(); // Don't use a JQuery selector here, just "form"
}
});
Это должно позволить плагину работать должным образом. Конечно, последним шагом будет добавление ваших правил проверки. Надеюсь, это поможет. Если у вас все еще есть проблемы с обработкой событий, попробуйте использовать методы объекта Event в JQuery для отладки на консоли.