我目前使用 Jquery Validation 和 Qtip 一起使用验证选项的 errorPlacement 组件在验证错误时使用漂亮的工具提示样式通知来处理实际验证和信息显示到屏幕。
目前,每个 viewModel 都有自己的自定义方法来设置和启动验证和回调,但是我试图寻找一种更好的方法,无论是添加自定义绑定来通过数据绑定设置我的验证规则还是另一种方法,但仍然产生相同的结果(即当发生验证错误时触发 errorPlacement 并告诉 Qtip 显示给定元素的错误)。
现在,在我开始自己制作之前,我刚刚在网上查了一下,发现了Knockout Validation,我最初认为这是一个好主意,我可以将我的验证逻辑直接应用于我的 viewModel 中的数据,然后找到某种回调来让 Qtip 使用开始,但是似乎没有我可以找到记录的回调。该库似乎为事物的验证方面做了我想做的一切,而不是为事物的显示方面。我查看了源代码和示例,但除了 ko.validation.group(viewModel) 之外什么都看不到,这会给我一个包含错误的 observable,但我不确定我是否可以像以前一样使用它期待。
这是我当前验证如何发生的示例:
/*globals $ ko */
function SomeViewModel() {
this.SetupValidation = function () {
var formValidationOptions = {
submitHandler: self.DoSomethingWhenValid,
success: $.noop,
errorPlacement: function (error, element) {
if (!error.is(':empty'))
{ qtip.DoSomethingToDisplayValidationErrorForElement(element, error); }
else
{ qtip.DoSomethingToHideValidationErrorForElement(element); }
}
};
$(someForm).validate(formValidationOptions);
this.SetupValidationRules();
};
this.SetupValidationRules = function() {
$(someFormElement1).rules("add", { required: true, minlength: 6, maxlength: 20, alphaNumeric: true });
$(someFormElement2).rules("add", { required: true, minlength: 6, maxlength: 20 });
$(someFormElement3).rules("add", { required: true, email: true, });
};
}
我目前确信我可以通过添加自定义绑定来消除对验证规则方法的需求,这样我就可以在数据绑定中设置验证,但是如果可能的话,我想使用与现有 Knockout 相同的回调方法-验证绑定。