2010-06-04 131 views
1

我试图动态添加一个jQuery验证程序规则,它不工作。它不会抛出任何错误,但不会触发验证。jQuery - 动态添加验证器规则?

这里的JS:

$(document).ready(function() { 

    $.validator.addMethod("TIME", function (value, element) { 
     var re = new RegExp(regexp); 
     console.debug("Validating " + value); 
     return this.optional(element) || re.test("^*(1[0-2]|[1-9]):[0-5][0-9] *(a|p|A|P)(m|M)*$").test(value); 
    }, "Time is invalid: Please enter a valid time."); 

$("input[id *= '_timepicker']").rules("add", "TIME"); 

}); 

任何想法有什么不对?

编辑:

现在,我得到一个错误:无效量词*(1 [0-2] | [1-9]):[0-5] [0-9] (A | P | A | P)(M | M) $

下面是相关的JS:

rules:{"special.Hours.FridayHours1.close":{ regExp: /^*(1[0-2]|[1-9]):[0-5][0-9] *(a|p|A|P)(m|M)*$/ } 

下面是完整的验证功能:

http://pastebin.com/YRday2Mv

回答

3

你的语法是关闭的只是一点,你需要,而不是传递对象的字符串,就像这样:

$("input[id*='_timepicker']").rules("add", {"TIME": true }); 

You can find the .rules() documentation with more examples here

+0

感谢您的快速响应,但这并不会触发验证。 – Justin 2010-06-04 02:54:34

+1

@Justin - 这不会触发它,你需要运行'.valid()'*实际*验证,这只是增加了规则,你希望什么时候验证它?另外,你有没有在这之前运行'.validate()'方法?它*必须*首先被调用,这只是增加了*额外的*规则。 – 2010-06-04 02:56:41

+0

我从来没有调用.valid(),但是我尝试将规则添加到我的.validate()函数中,而不是动态添加规则,现在我得到一个无效的量词错误。 – Justin 2010-06-04 03:18:02

-1
$(function() { 
     $('#order_form_id').validate(); 
     $("input[id*='_quantity']").each(function() {$(this).rules("add", {required:true,zznum:true});}) 
    }); 
+0

请尽量避免只是倾销代码作为答案,并试图解释它的作用和原因。对于那些没有相关编码经验的人来说,你的代码可能并不明显。请修改您的答案,以包含[澄清,上下文,并尝试在答案中提及任何限制,假设或简化。](https://stackoverflow.com/help/how-to-answer) – Frits 2017-05-26 05:20:43