2011-12-26 5 views
7

Я следующий вид:отправить форму после проверки JQuery

<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 код

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

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

Надеюсь, что кто-то поможет. Благодарю.

ответ

3

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

<script> 

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

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

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

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

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

Когда вы говорите, что «дата в форме представляются», что не имеет смысла для меня, потому что в ваших фрагментах кода я не вижу ничего под названием «дата».

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

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

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

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

9

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

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

или

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

[0] или получить (0) дает объект DOM вместо объекта JQuery.

+1

Спасибо, что указали, что ...Я искал это, так как у меня есть событие, связанное с отправкой формы, но прежде чем я отправлю форму, я должен выполнить запрос AJAX, и если условие истинно, я отправлю форму и там мне нужен обход. +1 –

Смежные вопросы