使用jQuery Validation Plugin创建动态规则的ColdFusion动态循环

时间:2015-05-05 13:17:52

标签: jquery coldfusion jquery-validate

我正在使用jQuery Validation Plugin。我有一个基于1-5创建的动态表单,具体取决于用户为循环选择的数字。我正在努力编写动态部分,以使每个表单字段在每个循环上正常工作。

<!--- Looping Validation --->
<script>
     $("#form").validate({
         focusCleanup: true,
         focusInvalid: false,
    rules: {
phoneNumber_<cfoutput>#Add#</cfoutput>: {
            required: true,
            validatePhone: true
        },
},
        // Same for other fields
    messages: {
phoneNumber_<cfoutput>#Add#</cfoutput>: "This field is required.",
        // Repeat for other fields
    }
});

所以我尝试创建的第一个例子,规则有效,但只有它循环一次。如果用户选择两个或更高,它只适用于第一个而不是第二个或更高的循环。

// Validates Phone Number
jQuery.validator.addMethod("validatePhone", function(value, element) {
    return this.optional(element) || /^(\([0-9]{3}\) |[0-9]{3}-)[0-9]{3}-[0-9]{4}$/.test(value);
}, 'Please enter valid Phone Number.');

然后我尝试了这个,它打破了RegEx,并且只尝试在第一个循环上进行验证。

// Validates Phone Number
jQuery.validator.addMethod("validatePhone", function(phoneNumber_<cfoutput>#Add#</cfoutput>) {
    var value = new RegExp("^(\([0-9]{3}\) |[0-9]{3}-)[0-9]{3}-[0-9]{4}$");
    return phoneNumber_<cfoutput>#Add#</cfoutput>.match(value);
}, 'Please enter valid Phone Number.');

任何帮助都将非常感谢!!提前谢谢!

1 个答案:

答案 0 :(得分:4)

  

我正在使用jQuery Validation Plugin。我有一个基于1-5创建的动态表单,具体取决于用户为循环选择的数字。我正在努力编写动态部分,以使每个表单字段在每个循环上正常工作。

你到底在说什么“循环”?我看到你的代码没有循环。您无法在同一表单上多次调用.validate()方法。您只需在表单上调用.validate()方法一次即可初始化该插件。 忽略所有后续调用。表单数据的实际验证将根据插件自动捕获的事件自动 。不需要循环,这里完全没用。

如果您需要将规则声明为动态创建的字段元素,则可以在创建新字段后立即调用the .rules() method,并在.validate()之后随时调用。{/ p>

定位“以”phoneNumber_开始的所有字段...

$('input[name^="phoneNumber_"]').each(function() {
    $(this).rules('add', {
        required: true,
        validatePhone: true,
        messages: {  // optional
            required: "custom message for required",
            validatePhone: "custom message for validatePhone"
        }
    });
});