2011-12-06 53 views
3

我正在使用jQuery驗證插件來驗證表單。表單字段是動態生成的。我有一封電子郵件:jQuery動態添加驗證規則到n個字段

<input type="text" name="customer_email_<?=$i?>" value="" id="customer_email_<?=$i?>" /> 

此輸入字段在php循環中,可以生成n次。這個想法是檢查輸入的電子郵件是否是唯一的。當用戶在生成的任何字段中輸入內容時,如果電子郵件是唯一的,我將發送一個正在數據庫中檢查的AJAX調用。

var pass_count_array = [<?=$js_array?>]; // generated by php 

jQuery.each(pass_count_array, function(index, p) { 

    //check if the e-mail is unique 
    jQuery.validator.addMethod("unique_email_"+p, function(value, element) { 
     return check_unique_email(p); 
    }); 


    var current_email = "customer_email_"+p; 
    jQuery("#tair_form").validate({ 
     rules : { 
      current_email: { 
       "unique_email_"+p : true 
      } 
    });   

}); 

上面的代碼在所有的領域循環,增加了自定義的驗證方法unique_email_1,unique_email_2等 這裏的問題是,驗證規則不接受這一點:

"unique_email_"+p : true 

任何想法如何將自定義驗證方法應用於每個電子郵件輸入字段?

回答

1

將一個類附加到電子郵件字段中,以便您不必通過id進行搜索,而是按類進行分組,這樣您只需將支票應用於整個類對象。

例如,通過它們循環.each(),並根據需要設置警報。

+0

雖然我同意,我不認爲這解決了實際問題。 Iskren試圖使用表達式('「unique_email _」+ p')作爲使用jQuery Validation插件的API初始化驗證規則的關鍵。 –

0

這個怎麼

<input type="text" name="customer_email" value="" id="<?=$i?>" /> 

$(function(){ 
    $("input[name=customer_email]").change(function(){ 
     var email = $(this).attr("id"); 
     if(check_unique_email(email)==true){ 
      //callback when email is unique 
     }else{ 
      //callback when email is not unique 
     } 
    }); 
});