【问题标题】:jQuery dynamically add validation rules to n-number of fieldsjQuery 为 n 个字段动态添加验证规则
【发布时间】:2011-12-06 17:21:26
【问题描述】:

我正在使用 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

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

【问题讨论】:

    标签: php javascript jquery


    【解决方案1】:

    将类附加到电子邮件字段,这样您就不必按 id 搜索,而是按类分组,这样您只需对整个类对象进行检查。

    例如循环通过它们.each(),并根据需要触发警报。

    【讨论】:

    • 虽然我同意,但我认为这并不能解决真正的问题。 Iskren 正在尝试使用表达式 ("unique_email_"+p) 作为密钥,通过 jQuery Validation 插件的 API 初始化验证规则。
    【解决方案2】:

    这个呢

    <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
            }
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-07
      • 2012-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多