2013-08-22 2 views
0

У меня возникла проблема «получить пропуск» для проверки моего модуля проверки формы, он останавливается и не начнет обрабатываться. Когда он должен быть обработан, он дает мне «Вы должны заполнить»:Форма JQuery не подтвердит успех

Что может быть неправильным?

Fidde

Jquery:

$("form").submit(function (e) { 
    e.preventDefault(); // This will prevent the form submission 
    var response = ""; 
    var missing = ""; 
    $('#submit-holder').find('input').each(function(){ 
    if ($(this).val() == '') { 
    missing += $('label[for="' + this.id + '"]').html() + " | "; 
    empty_fields = true;  
    missing_fields = true; 
    }  

    else if ($(this).val() != '') { 
    empty_fields = false; 
     $('.alert').hide(); 
    } 

    }); 

    response += "* <strong>You need to fill out:</strong> " + missing; 

    if(!$('#user_terms').is(':checked')) 
    { 
    response += "<br>* You need to accept the terms and conditions to continue"; 
    } 

    var email = $('[name="txtEmail"]').val(); 

    if(IsEmail(email)==false){ 
      valid_email = false; 
      response += "<br><strong>* The e-mail address you've entered is invalid</strong>"; 
    } 

    response_message(response); 

    if(!missing_fields && valid_email !== false &&  $('#user_terms').is(":checked")) { 

    $('.alert').hide() 


} 
    }); 

// Functions: 
function IsEmail(email) { 
var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
if(!regex.test(email)) { 
    return false; 
}else{ 
    return true; 
} 
} 

function response_message(response) { 
$('.alert').addClass('alert-danger'); 
$('.alert').fadeIn();   
$('.error_message').html(response); 
}  
+1

Вы читали этот код? Какое поведение вы ожидаете от этого? – ataman

+0

Вы пытались отладить его? Любые ошибки в консоли? – melancia

+0

Я ожидаю, что после этого if() форма должна обработать и .hide() .alert => '(! Missing_fields && valid_email! == false && $ ('# user_terms'). Is (": checked ")) {' – Kim

ответ

0

Другие ошибки

fiddle

if (missing) response += "* <strong>You need to fill out:</strong> " + missing; 



if (IsEmail(email) == false) { 
    valid_email = false; 
    response += "<br><strong>* The e-mail address you've entered is invalid</strong>"; 
} 
else valid_email = true; // missing 

response_message(response); 

if (!missing_fields && valid_email && $('#user_terms').is(":checked")) { 
+1

Спасибо за очень хороший код! Отлично работает! – Kim

+0

Невероятный кто-то безвизовый без комментариев! – mplungjan

0

ошибка селектора.

Вот рабочая версия: http://jsfiddle.net/SBYQ5/18/

Просто замените $('#submit-holder').find('input').each(function() { с $('form').find('input').each(function() {

Или - aternatively - добавить submit-holder в виде идентификатора.

Кроме того, вам не хватало некоторых объявлений var.

+0

Спасибо, но он все еще не обрабатывается. Когда форма отправлена, необходимо запустить предупреждение (json). – Kim

+0

Оформить заказ мой ответ, я обновил его ;-) Теперь он должен хорошо работать –

0

Когда вы проверяете для электронной почты путем вызова функции, вы проверяете, если его не действует, вы настраиваете VALID_EMAIL ложь. Когда электронная почта действительна, вы не устанавливаете ее в true.

Вы можете использовать либо

if(IsEmail(email)==false){ 
    valid_email = false; 
    response += "<br><strong>* The e-mail address you've entered is invalid</strong>"; 
} 
else { 
    valid_email = true; 
} 


Or 

valid_email = true; 
if(IsEmail(email)==false){ 
    valid_email = false; 
    response += "<br><strong>* The e-mail address you've entered is invalid</strong>"; 
} 
Смежные вопросы