Отправить форму после проверки jquery

113
5

У меня есть следующая форма:


<form id="form" action="comments.php" method="post">
<ul>
<li><div class="formbox_titles">Name</div><input type="text" name="name" class="required comm_input" /></li>
<li><div class="formbox_titles">Email</div><input type="text" name="email" class="required comm_input"/></li>
<li><div class="formbox_titles">Message</div><textarea name="message" class="required comm_text"></textarea></li>
<li><input type="submit" value="Submit"></li>
</ul>
</form>

и после JQuery для отправки формы:


target: '#preview', 
success: function() {
$('#formbox').slideUp('fast');
}

Теперь проблема в том, что у меня также есть форма проверки JQuery code


$().ready(function() {
// validate comment form
$("#form").validate({
});
});

Оба они отлично работают, и в форме появляется всплывающее предупреждение о том, что все три поля не могут быть пустыми, но дата внутри формы в любом случае отправляется в базу данных. Im, используя следующий код для проверки формы http://bassistance.de/jquery-plugins/jquery-plugin-validation/ Итак, вопрос заключается в том, как добавить первый jquery в секунду, поэтому сначала будет выполняться после того, как требуемые поля заполнены?


Надеюсь, кто-то поможет. Спасибо.

спросил(а) 2011-12-26T22:42:00+04:00 8 лет, 9 месяцев назад
1
Решение
130

Если вы хотите отправить форму вручную, вам необходимо обойти событие jQuery bound. Вы можете сделать это одним из следующих способов:


$('#form_id')[0].submit();

или

$('#form_id').get(0).submit();

[0] или get (0) предоставляет объект DOM вместо объекта jQuery.

ответил(а) 2014-08-26T01:50:00+04:00 6 лет, 1 месяц назад
121

Из вашего примера, я не знаю, как управлять потоком вашей страницы, однако я предполагаю, что вы вызываете метод submit() где-то. После того, как вы подтвердите форму и перед ее отправкой, проверьте ее с помощью метода valid(). Ваш код должен выглядеть примерно так:

$("#form").validate();
if ($('#form').valid())
$('#form').submit();

ответил(а) 2011-12-26T22:56:00+04:00 8 лет, 9 месяцев назад
92

Я ничего не знаю о вашем плагине проверки, но обычно вы можете использовать этот мир кода


<script>

$("form").submit(function() {
if (validationIsTrue()) {
return true;
}
else {
return false;
}
});
</script>


Вы должны сделать свою проверку, а затем вернуть true/false в функцию отправки формы. Если плагин возвращает значение bool, вы можете попробовать что-то вроде этого:


$("form").submit(function() {
return $(this).validate({ .... });
});

ответил(а) 2011-12-26T22:47:00+04:00 8 лет, 9 месяцев назад
70

Когда вы говорите, что отправлена ​​ "дата внутри формы", это не имеет для меня никакого смысла, потому что в ваших фрагментах кода я не вижу ничего, называемого "датой".


Я использовал расширитель .validate()...
Что я могу сказать вам, что может помочь, так это то, что плагин validate, который вы используете, имеет функцию submitHandler, которую вы можете использовать...


// validate comment form
$("#form").validate({
submitHandler : function(form) {
//do something here
form.submit();
}
});

SubmitHandler вызывается только в том случае, если выполнены все правила проверки. А именно, в вашем случае у вас есть три поля с обязательным для них, что означает, что эта форма НЕ будет отправлена, если все три поля не имеют значения.


С этим я могу точно сказать, что с предоставленной информацией нет ничего, чтобы указать проблему, которую вы описываете. Предоставление большей и лучшей информации поможет нам понять, что неправильно.

ответил(а) 2011-12-26T23:48:00+04:00 8 лет, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема