2014-01-11 86 views
0

當我添加遠程jQuery驗證我的表單提交即使有錯誤,當我刪除遠程它工作正常,你不能提交表單,除非你有填補所有領域?有任何想法嗎?代碼如下當我添加遠程JQuery驗證表單提交時無效

<script> 
$(document).ready(function() { 

    $("#SignUp").validate({ 
     onsubmit: true, 
     onkeyup: function(element) { $(element).valid(); }, 
     rules: { 
      email: { 
       required: true, 
       email: true 
      }, 
      password: { 
       required: true, 
       password: true 
      }, 
      confirm_password: { 
       equalTo: "#password", 
       required: true 
      }, 
      company: { 
       nls:true, 
       required: true 
      }, 
      telephone: { 
       required: true, 
       phoneUK: true 
      }, 
      email2: { 
       email: true 
      }, 
      website: { 
       url: true 
      }, 
      address1: { 
       nls:true 
      }, 
       address2: { 
       nls:true 
      }, 
      town: { 
       nls:true  
      }, 
      postcode: { 
       postcodeUK:true 
      }, 
      country: { 
       selectcountry:true 
      }, 
      terms:{ 
       required:true    
      }, 
      answer:{ 
       remote: "Captcha/check-captcha.php", 
       type: "POST", 
       data: { 
         captcha: function() { 
         return $("#answer").val(); 
           } 
         } 

      } 
     }, 
     messages:{ 
      email: 
        { 
         required: "Please Enter an Email Address" 
        }, 
      password: 
        { 
         required: "Please Enter a Password" 
        }, 
      confirm_password: 
        { 
         required: "Please Confirm Your Password" 
        }, 
      company: 
        { 
         required: "Please Enter Your Company/Climbing Gym Name" 
        }, 
      telephone: 
        { 
         required: "Please Enter a Telephone Number" 
        }, 
      terms: 
        { 
         required: "Please Agree Our Terms and Conditions" 
        }, 
      answer:{ 
         remote: "You Have Entered The Captcha Correctly When This Message Disappears" 
        } 

     } 
    }); 

    $.validator.addMethod("password", function (value, element) { 
     return this.optional(element) || /^[[email protected]#$%^&*()_]{6,16}$/i.test(value); 
    }, "Passwords are 6-16 characters"); 

    $.validator.addMethod("nls", function(value, element) 
    { 
    return this.optional(element) || /^[a-zA-Z0-9\s.\-_']+$/i.test(value); 
    }, "Please Only Enter Alpha Numeric Characters and Spaces"); 


    jQuery.validator.addMethod('selectcountry', function (value) { 
     return (value != 'Nothing'); 
    }, "Please Select a Country"); 

    $.validator.addMethod("url", function(value, element) 
    { 
    return this.optional(element) || /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/i.test(value); 
    }, "Please Enter A Valid Website URL"); 





}); 
</script> 

PHP低於:

<?php 
session_start(); 
if(strtolower($_REQUEST['answer']) == $_SESSION['captcha']){  
echo 'true';die; 
}else{ 
echo 'false';die; 

} 
?> 

驗證仍然有效的onkeyup等使用和不使用遙控器,但只是沒有對提交?

+0

遠程規則應該'回答:{ 遠程:{ 網址: 「驗證碼/籤captcha.php」, 類型:「 POST「, data:{ captcha:function(){ return $(」#answer「)。val(); } } } } ' –

+0

有一點要記住的是從客戶端使用AJAX的遠程驗證是不夠的驗證碼需要在表格的提交處理程序進行驗證的答案提交 –

+0

乾杯阿倫,現貨,愚蠢的錯誤,非常感謝 – user3166610

回答

0

遠程規則語法稍微偏離你的情況

answer: { 
    required: true, 
    remote: { 
     url: "Captcha/check-captcha.php", 
     type: "POST", 
     data: { 
      captcha: function() { 
       return $("#answer").val(); 
      } 
     } 
    } 
}