2010-01-12 32 views
1

我目前在我的新項目中使用了cakephp的jQuery驗證插件。jquery驗證插件並檢查唯一字段?

它的工作完美,直到我需要通過Ajax獨特的檢查,以電子郵件字段,檢查與數據庫..

我不知道如何把這個插件使從數據庫到電子郵件的唯一驗證。

感謝名單

回答

3

我想你指的使用AJAX調用(通過插件)與服務器進行檢查獨特的電子郵件,啊?

我會建議使用驗證插件的addMethod創建一個自定義驗證,您可以在其中調用AJAX調用(它將成爲jQuery核心的一部分)。

有一個SO張貼關於這個主題,你可以探索:
JQuery Validate Plugin - How to create a simple, custom rule?

請注意,您將不得不自己實現服務器端腳本。

這裏的另一篇文章應該是有用的(使用jQuery和PHP):
Check email already exist – Ajax – Jquery

1

的語法很簡單

$.validator.addMethod("eventName", 
    function(value, element) { 
      // condition returns true or false 
    }, "Error message to display"); 
}); 

事件名字叫做形式

<input type="text" name="name" class="eventName" /> 

如果有任何疑問,請參閱此鏈接

jQuery Validate Plugin - How to create a simple custom rule?

1

如果要檢查電子郵件是否唯一,可以使用遠程規則。 距離:http://jqueryvalidation.org/remote-method

實施例:使所需的電子郵件字段,電子郵件和確實的遠程請求,以檢查是否在給定的地址已被使用。

$("#myform").validate({ 
    rules: { 
    email: { 
    required: true, 
    email: true, 
    remote: "check-email.php" 
    } 
    } 
}); 

實施例:使所需的電子郵件字段,電子郵件和確實的遠程請求,以檢查是否在給定的地址已被使用。另外,http方法設置爲「發佈」,並且用戶名與電子郵件地址一起發送。

$("#myform").validate({ 
    rules: { 
    email: { 
    required: true, 
    email: true, 
    remote: { 
      url: "check-email.php", 
      type: "post", 
      data: { 
      username: function() { 
       return $("#username").val(); 
       } 
      } 
    } 
    } 
} 
}); 
0

試着這麼做

$.validator.addMethod("unique", 
      function(value, element, params) { 
       var isUnique = false; 
       if(value == '') 
         return isUnique; 

       id_send= ''; 
       if(params[1] !='') 
        id_send ='id='+params[1]+'&'; 

       $.ajax({ 
        url: "path"+params[2], 
        type : 'GET', 
        async: false, 
        data: id_send+'field=' + params[0] + "&value=" + value, 
        dataType: 'json', 
        cache: true, 
        success: function(data){ 
         isUnique = data; 
        } 
       }); 

       return isUnique; 

      }, 
      jQuery.validator.format("Value already in use") 
    ); 

在上面的代碼:

  • 路徑是應用程序的根路徑;
  • params [0]是要檢查唯一的屬性的名稱;
  • params [1]是對象的id,如果你想檢查編輯也是這樣,所以排除自己;
  • params [2]是要檢查的php文件的路徑。

的東西等導致的:

rules: 
     { 
      email: { 
       required: true, 
       unique:['email', $('#user_id').val(),'uniqueemail.php'], 
       email: true 
      }, 

的PHP uniqueemail.php,在現場電子郵件搜索,如果返回空或ID的用戶等於$('# user_id')。val()所以返回true,否則返回false。

注意,異步屬性設置,這是一個挫折,但會做的工作。

相關問題