使用 jQuery 验证插件创建动态规则的 ColdFusion 动态循环
ColdFusion Dynamic Loop with jQuery Validation Plugin Creating Dynamic Rule
我正在使用 jQuery 验证插件。我有一个基于 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.');
如有任何帮助,我们将不胜感激!!提前致谢!
I am using the jQuery Validation Plugin. I have a dynamic form that is created based on 1-5 depending on what number the user chooses for the loop. I am struggling on writing the dynamic portion to make each form field work correctly on each loop.
你到底在说什么 "looping"?我在你的代码中没有看到循环。您不能在同一个表单上多次调用 .validate()
方法。您只需在表单上 一次 调用 .validate()
方法 初始化 插件。 忽略所有后续调用。表单数据的实际验证自动基于自动的事件] 被插件捕获。不需要循环,在这里完全没用。
如果您需要在动态创建的字段元素上声明规则,您可以在创建新字段后立即调用 the .rules()
method,并在 .validate()
.
之后随时调用
定位 "start with" 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"
}
});
});
我正在使用 jQuery 验证插件。我有一个基于 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.');
如有任何帮助,我们将不胜感激!!提前致谢!
I am using the jQuery Validation Plugin. I have a dynamic form that is created based on 1-5 depending on what number the user chooses for the loop. I am struggling on writing the dynamic portion to make each form field work correctly on each loop.
你到底在说什么 "looping"?我在你的代码中没有看到循环。您不能在同一个表单上多次调用 .validate()
方法。您只需在表单上 一次 调用 .validate()
方法 初始化 插件。 忽略所有后续调用。表单数据的实际验证自动基于自动的事件] 被插件捕获。不需要循环,在这里完全没用。
如果您需要在动态创建的字段元素上声明规则,您可以在创建新字段后立即调用 the .rules()
method,并在 .validate()
.
定位 "start with" 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"
}
});
});