2012-05-06 3 views
0

Я успешно выполнил проверку формы в реальном времени для моей страницы регистрации, все это отлично работает, за исключением того, что я хочу, чтобы форма отключила кнопку отправки до тех пор, пока все входы не будут правильно, и пользователь проверил два флажка (условия и политика конфиденциальности). Я постарался дать ему уйти, но я никогда не делал этого раньше, поэтому не совсем уверен, с чего начать, я спросил пару человек и, видимо, это связано с возвратом false внизу javascript ниже. Любая помощь была бы весьма признательна. БлагодаряОтключить кнопку отправки до тех пор, пока все входы не будут исправлены

HTML FORM

<div id="overlay"> 


<div id="modal_wrapper"> 
     <div id="modal_content"> 

     <form id="jform" action="" method="post" enctype="multipart/form-data"> 
      <div id="modal_content_left"> 
      Register 

      <ul> 

       <li class="required" type="none"> 

        <label> 

         <input type="text" class="reg_text tip" name="username" id="username" title="8 - 16 Characters" placeholder="Username*"/> 

        </label> 

        <label> 
         <br /> 
         <input type="text" class="reg_text tip" name="email" id="email" title="Get Verified" placeholder="Email*"/> 

        </label> 
        <label> 
         <br /> 
         <input type="password" class="reg_text tip" name="password" id="password" title="Min 8 Characters" placeholder="Password*"/> 

        </label> 


        <label> 
         <br /> 
         <input type="password" class="reg_text tip" name="cpassword" id="cpassword" title="Min 8 Characters" placeholder="Verify Password*"/> 
        </label> 
       </li> 


      </ul> 

      </div><!---end modal_content_left---> 

      <div id="modal_content_right"> 

      <!--<li class="required double" type="none">--> 


       <div id="payment_options"> 

        <p> 
         <label><img src="images/index/images/paypal.png" width="78" height="38" alt="PayPal" /> 
          <br /> 
          <input type="radio" name="payment_selection" value="paypal" id="payment_selection_0" checked/> 
          </label> 

         <label><img src="images/index/images/alertpay.png" width="78" height="38" alt="Alertpay" /> 
          <br /> 
          <input type="radio" name="payment_selection" value="alertpay" id="payment_selection_1" /> 
          </label> 

          <label><img src="images/index/images/check.png" width="78" height="38" alt="Check" /><br /> 
          <input type="radio" name="payment_selection" value="check" id="payment_selection_2" /> 
          </label> 

      </p> 
      <br /><br /><br /><br /> 
        Account Type 

        <p> 
         <label><img src="images/index/images/demo.png" width="78" height="38" alt="Demo" /> 
         <br /> 
         <input type="radio" name="account_type" value="demo" class="demo_radio" id="account_type_0" /> 
         </label> 

         <label><img src="images/index/images/real_account.png" width="78" height="38" alt="Real" /><br /> 
         <input type="radio" name="account_type" value="real" id="account_type_1" checked/> 
         </label> 

        </p> 
       </div><!---end payment_options---><br /><br /><br /> 

       <div id="final_reg"> 
       <div id="check_boxes"> 
       <p> 
       <li class="required" type="none"> 
       <label> 
        <input type="checkbox" name="agree_cons" value="terms" id="agree_cons_0" /> 
        I agree to Terms</label> 
       <br /><br /> 
       <label> 
        <input type="checkbox" name="agree_cons" value="privacy" id="agree_cons_1" /> 
        I agree to Privacy Policy</label> 
        </li> 

       <br /> 
       </p></div><!---end check_boxes---> 
       <div id="register_submit"> 
       <input name="submit" type="submit" class="register_submit" 
         id="register_submit" alt="Register" /> 
       </div><!---end register_submit---> 
      </div><!---end final_reg---> 
     </div><!---end mofal_content_right---> 

     </form> 
     </div><!---end modal_content---> 
     <div id="error_display"></div><!---end error_display---> 
</div><!---end modal_wrapper---> 

Javascript КОД

$(document).ready(function() { 
jFunc={ 
    mustMatch: function(el,pt){ 
      if (pt.test(el.val())) 
       el.removeClass('error').addClass('correct') 
      else{ 
       jVal.errors = true; 
       el.removeClass('correct').addClass('error').effect("shake", { times:3, distance:5 }, 60); 
      } 
     }, 
    mustEqual: function (el,val){ 
      if (el.val()==val) 
       el.removeClass('error').addClass('correct') 
      else{ 
       jVal.errors = true; 
       el.removeClass('correct').addClass('error').effect("shake", { times:3, distance:5 }, 60); 
      } 
     } 
    } 
jVal = { 
    'username': function() { 
     jFunc.mustMatch($('#username'),/^(?=.*[a-z].*)\w{8,}$/i); 
    }, 
    'email': function() { 
     jFunc.mustMatch($('#email'),/^[email protected]+[.].{2,}$/i); 
    }, 
    'password': function() { 
     jFunc.mustMatch($('#password'),/^.{8,}$/i); 
    }, 
    'cpassword': function() { 
     jFunc.mustEqual($('#cpassword'),$('#password').val()); 
    }, 
}; 
$('#username').change(jVal.username); 
$('#email').change(jVal.email); 
$('#password').change(jVal.password); 
$('#cpassword').change(jVal.cpassword); 
$('#jform').submit(function(){ 
    $.each(jVal,function(i,v){ 
     $.isFunction(v) && v() 
    }) 
    return false // fix this when the code works. 
}) 

});

+3

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

+0

Привет, извините, я не знаю, почему все это сломалось, я отредактировал его сейчас, спасибо – Arken

+0

Все это разрушило причину случайных атак. : P Действительно, действительно ли проблема действительно требует вставки каждого фрагмента HTML? Было бы полезно, если бы вы могли уменьшить HTML до минимального, но работоспособного примера. – cHao

ответ

1

В дополнение к существующим обработчики событий, вы могли бы сделать что-то вроде

$('#username,#email,#password,#cpassword').change(function() { 
    jVal.errors = false; 
    $.each(jVal, function(i, validator) { 
     if ($.isFunction(validator)) { validator(); } 
    }); 
    $('#register_submit').prop('disabled', jVal.errors); 
}); 

Примечание, однако, вы можете иметь ваш обработчик представить проверить, выключена ли кнопка представить (и return false, если она есть, поэтому форма не отправляется), а не сама повторная проверка. Таким образом, все проверки происходят из одного и того же места.

(Конечно, и просто так это сказал, все это не исключает необходимость надлежащей проверки данных на стороне сервера.)

+0

Хорошо, но что я могу добавить, чтобы включить/отключить кнопку отправки. Кроме того, я также выполняю проверку на стороне сервера, я просто хочу дать базовую проверку пользователю, который находится в режиме реального времени, чтобы остановить необходимость постоянного запуска php – Arken

+0

. Я добавил пример. – cHao

+0

Отлично, ваш код выглядит великолепно, хотя он говорит, что на 6-й строке есть ошибка ($ ('# register_submit'). Prop ('disabled', jVal.errors);) Что я думаю, является причиной отсутствия проверки работая вообще, я посмотрел, но не могу найти, что может быть ошибкой – Arken

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