2013-03-29 5 views
1

Эта форма работала. Пока я не внеся некоторые корректировки с помощью функции проверки электронной почты. Есть ли что-то, чего я не вижу, что нужно сделать? Также, как я могу улучшить эту форму?Регистрационная форма не отправляется

Что я изменил, это то, какая проверка сначала срабатывает. Как только базовая проверка будет выполнена, а электронная почта не будет пустой. Прежде чем приступать к представлению, я хотел бы получить подтверждение по электронной почте.

$(document).ready(function() { 

    //add default text on certain fields 
    $("#phone").on({ 
     focus: function() { 
      if($(this).val().length === 0) { 
       $(this).val('+'); } 
      }, 
     blur: function() { 
      if($(this).val() === '+') { 
       $(this).val(''); } 
      } 
    }); 

    $("#twitter").on({ 
     focus: function() { 
      if($(this).val().length === 0) { 
       $(this).val('@'); } 
      }, 
     blur: function() { 
      if($(this).val() === '@') { 
       $(this).val(''); } 
      } 
    }); 

    $("#facebook").on({ 
     focus: function() { 
      if($(this).val().length === 0) { 
       $(this).val('facebook.com/'); } 
      }, 
     blur: function() { 
      if($(this).val() === 'facebook.com/') { 
       $(this).val(''); } 
      } 
    }); 

    $("#portfolio").on({ 
     focus: function() { 
      if($(this).val().length === 0) { 
       $(this).val('www.'); } 
      }, 
     blur: function() { 
      if($(this).val() === 'www.') { 
       $(this).val(''); } 
      } 
    }); 

    //when submit is clicked 
    $('#contactform').on('submit', function() { 
     var form = $(this); 
     var inputs = $('input[type="text"]'); 
     var workshop = $('#selectworkshop'); 
     var firstname = $('#firstname'); 
     var lastname = $('#lastname'); 
     var email = $('#email'); 
     var phone = $('#phone'); 
     var companyorschool = $('#companyorschool'); 
     var portfolio = $('#portfolio'); 
     var twitter = $('#twitter'); 
     var facebook = $('#facebook'); 
     var honeypot = $('#honeypot'); 
     var invalid = false; 

     //basic validation on required fields 
     $('.required').each(function() { 
      if ($(this).val().length === 0) { 
       $(this).addClass('highlight'); 
        if($('#form-alert').is(':visible')) { 
         $('body').scrollTo('#form-alert',{duration:'fast', offsetTop : '30'}); 
        } else { 
         $('#form-alert').html('Please fill in the required information.').slideDown('slow'); 
        } 
       invalid = true; 
      } else { 
       $(this).removeClass('highlight'); 
       invalid = false; 
      } 
     }); 

     if (invalid === true) { 
      return false; 
     } 

     //basic email validation 
     if(validateEmail(email) === false) { 
      $(email).addClass('highlight'); 
       if($('#form-alert').is(':visible')) { 
        $('#form-alert').html('Please enter a valid email address.'); 
        $('body').scrollTo('#form-alert',{duration:'fast', offsetTop : '30'}); 
       } else { 
        $('#form-alert').html('Please enter a valid email address.').slideDown('slow'); 
        $('body').scrollTo('#form-alert',{duration:'fast', offsetTop : '30'}); 
       } 
      invalid = true; 
     } else { 
      invalid = false; 
     } 

     if (invalid === true) { 
      return false; 
     } 

     //email validation function using regex 
     function validateEmail(email) { 
      var emailReg = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-][email protected][a-zA-Z0-9](?:[a-zA-Z0-9-]{0,253}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,253}[a-zA-Z0-9])?)*$/; 
      if(!emailReg.test(email)) { 
      return false; 
      } else { 
      return true; 
      } 
     } 

     //show the loading animation on button 
     $('#submit').val(' ').addClass('loading').attr('disabled', 'true'); 

     //start the ajax 
     $.ajax({ 
      url: '/registration.php', 
      type: 'POST', 
      data: form.serialize(), 
      cache: false, 
      beforeSubmit: function() { 
       if($('#form-alert').is(':visible')) { 
        $('form-alert').slideUp('fast'); 
       } 
      }, 
      success: function(responseText, statusText, xhr) { 
       console.log("Worked!"); 
       $('#form-success').html(responseText).slideDown('slow'); 
      }, 
      complete: function() { 
       inputs.attr('disabled', 'true'); 
       $('#submit').removeClass('loading').val('REGISTRATION COMPLETE'); 
      } 
     }); 
     //cancel the submit button default behaviours 
     return false; 
    }); 
}); 
+0

Что-нибудь в консоли? – mplungjan

+0

Также никогда не вызывайте ничего в форме «отправить» - измените идентификатор и/или имя – mplungjan

+0

@mplungjan Ничего. Когда все обязательные поля заполняются (включая правильную электронную почту), кнопка отправки ничего не делает с «Пожалуйста, введите действительный адрес электронной почты». отображение ошибки. – baderkamal

ответ

0

Я внесла некоторые изменения, чтобы сделать эту работу. Наличие формы в условном выражении имеет большое значение. Там есть возможность для улучшения. Я доберусь до этого в какой-то момент.

$(document).ready(function() { 

    //add default text on certain fields (removed to simplify answer) 

    //when submit is clicked 
    $('#submit').on('click', function() { 
     var form = $('#contactform'); 
     var inputs = $('input[type="text"]'); 
     var workshop = $('#selectworkshop'); 
     var firstname = $('#firstname').val(); 
     var lastname = $('#lastname').val(); 
     var email = $('#email').val(); 
     var phone = $('#phone').val(); 
     var companyorschool = $('#companyorschool').val(); 
     var portfolio = $('#portfolio').val(); 
     var twitter = $('#twitter').val(); 
     var facebook = $('#facebook').val(); 
     var honeypot = $('#honeypot').val(); 
     var required_invalid = false; 
     var email_invalid = false; 
     var email_validation = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-][email protected][a-zA-Z0-9](?:[a-zA-Z0-9-]{0,253}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,253}[a-zA-Z0-9])?)*$/; 

     $('.required').removeClass('highlight'); 

     //basic validation on required fields 
     $('.required').each(function() { 
      if ($(this).val().length === 0) { 
       $(this).addClass('highlight'); 
        if($('#form-alert').is(':visible')) { 
         $('body').scrollTo('#form-alert',{duration:'fast', offsetTop : '30'}); 
        } else { 
         $('#form-alert').html('Please fill in the required information.').slideDown('slow'); 
        } 
       required_invalid = true; 
      } 
     }); 

     if (required_invalid === true) { 
      return false; 
     } 

     //basic email validation 
     if(!email_validation.test(email)) { 
      $(email).addClass('highlight'); 
       if($('#form-alert').is(':visible')) { 
        $('#form-alert').html('Please enter a valid email address.'); 
        $('body').scrollTo('#form-alert',{duration:'fast', offsetTop : '30'}); 
       } else { 
        $('#form-alert').html('Please enter a valid email address.').slideDown('slow'); 
        $('body').scrollTo('#form-alert',{duration:'fast', offsetTop : '30'}); 
       } 
      email_invalid = true; 
     } 

     if (email_invalid === true) { 
      return false; 
     } 

     if (required_invalid === false && email_invalid === false) { 

      //show the loading animation on button 
      $('#submit').val(' ').addClass('loading').attr('disabled', 'true'); 

      //start the ajax 
      $.ajax({ 
       url: '/registration.php', 
       type: 'POST', 
       data: form.serialize(), 
       cache: false, 
       success: function(responseText, statusText, xhr) { 
        console.log("Worked!"); 
        $('form-alert').slideUp(); 
        $('#form-success').html(responseText).slideDown('slow'); 
       }, 
       complete: function() { 
        inputs.attr('disabled', 'true'); 
        $('#submit').removeClass('loading').val('REGISTRATION COMPLETE'); 
       } 
      }); 
     } else { 
      //cancel the submit button default behaviours 
      return false; 
     } 
    }); 
}); 
Смежные вопросы