2011-10-28 46 views
0

我正在做的事情非常簡單。我只是想要一個基本的表格,但是如果它有效的話,即使它掛在那裏並且像字段一樣有效,即使它不是。jQuery表單驗證無法繼續驗證

例如,如果我輸入[email protected]作爲電子郵件地址,並檢出,則將其設置爲有效。但是,如果我回去並且放入存在的電子郵件,並且應該返回false(並且),則狀態不會改變。這也適用於equalTo方法。

這真是frusterating:/

這裏的JS [縮短名稱]:

$('#register').validate({ 
    rules: { 
     scq: { 
      required: true 
     }, 
     email: { 
      required: true, 
      remote: { 
       url: 'ajax.php', 
       type: 'post', 
       async: false, 
       data: { 
        type: 'email', 
        email: function() { 
         return $('#email').val() 
        } 
       } 
      } 
     }, 
     email2: { 
      equalTo: '#email' 
     }, 
     pass: { 
      required: true 
     }, 
     pass2: { 
      equalTo: '#pass' 
     } 
    }, 
    success: function(label) { 
     label.html(' ').addClass('success'); 
    } 
}); 

爲ajax.php的PHP:

if($row['id']) $success = true; 
else $success = false; 

echo json_encode($success); 

回答

1

...如果我去返回並放入一個存在的電子郵件,並且應該返回 錯誤(並且)狀態不會改變。

這是因爲您在success:處理程序中手動添加名爲.success的類。問題是,如果後續驗證失敗,則什麼都不會刪除該類。

你可以讓插件automatically apply/remove the appropriate class for success。 (它已經這樣做了錯誤類。)添加validClass:處理器...

$('#register').validate({ 
    validClass: 'success', 
    rules: { // etc. etc. 

,然後從success:處理程序刪除.addClass('success')


我不完全確定您的$success變量適合的位置,還是它是問題的一部分。

然而,to simply test if validation has passed or failed,你只是檢查,看看是否.valid()是真的還是假的......

if ($('#register').valid() == true) { alert('passed validation'); }; 

if ($('#register').valid() == false) { alert('failed validation'); }; 

我希望這有助於。

+1

這工作順便說一句,我真的想通了,我看到你的評論之前。提高這一點,以便人們可以在將來看到它! –