我有一个插件,通常处理用于CRUD操作的jQuery对话框的创建。添加到对话框中的表单的标记在插件代码的外部可用,插件只需要向http服务提供标记,并在收到时简单地将其添加到对话框本身。动态添加验证规则
然后,我在插件(onSetupValidation
函数)中创建了一个回调函数,它是插件用户为每个表单定制验证的句柄。这是我使用的代码示例
var element = $('#mydiv');
element.crudplugin({
[...]
onSetupValidation: function(markup) {
var form = $('#myForm', markup);
var container = $('<div class="error"><p>Errors were found validating your form. Please correct them and retry.</p><ol></ol></div>')
.appendTo(form).hide();
var validator = form.validate({
errorContainer: container,
errorLabelContainer: $('ol', container),
errorElement: 'em',
wrapper: 'li',
highlight: function (element) {
$(element).addClass("ui-state-error");
},
unhighlight: function (element) {
$(element).removeClass("ui-state-error");
},
submitHandler: function (form) {
[...]
}
});
}
[...]
});
好吧。让我们来看看问题
- 如果我在标记内添加验证规则(作为类属性),验证根本不起作用。同样的行为,如果我在
validate()
方法 周围的Googling添加规则我发现有很多的样品,expecially这里是这样,使用validation plugin喜欢的
.rules('add', rule)
方法下面的示例中,所有这些链接建议致电validate
下面的示例中添加任何规则,像以前一样的方法$("#myField", markup).rules("add", { required: true });
但是,如果使用时istruction得到执行我收到以下错误此方法:
SCRIPT5007: Unable to get value of the property 'settings': object is null or undefined jquery.validate.min.js, line 15 character 257
有什么建议吗?
感谢您的回答。在创建对话框和表单显示之前调用回调。在回调中,我先调用validate()然后添加规则。我将尝试在show()方法后移动回调... – Lorenzo 2012-07-05 22:42:36
这样做肯定会 - 如果这是一个jQuery对话框,“open”事件将是一个合适的地方。 – Ryley 2012-07-05 22:47:28