jQuery动态地将验证规则添加到n个字段

时间:2011-12-06 17:21:26

标签: php javascript jquery

我正在使用jQuery验证插件来验证表单。表单字段是动态生成的。我有一封电子邮件:

<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

如何将自定义验证方法应用于每个电子邮件输入字段?

2 个答案:

答案 0 :(得分:1)

将一个类附加到电子邮件字段,这样您就不必按ID搜索,而是按类分组,这样您就可以对整个类对象应用检查。

例如,

循环遍历.each(),并根据需要设置警报。

答案 1 :(得分: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
        }
    });
});