Knockout.js 敲除验证addClass到验证元素的父级
如何在对元素的父元素进行敲除验证时使用我的类? 我的密码在这里Knockout.js 敲除验证addClass到验证元素的父级,knockout.js,knockout-validation,Knockout.js,Knockout Validation,如何在对元素的父元素进行敲除验证时使用我的类? 我的密码在这里 <li> <label for="">Residence:</label> <select data-bind="options: passengerDocs.countries(), optionsText: 'Key', optionsCaption: 'ChooseCountry',
<li>
<label for="">Residence:</label>
<select data-bind="options: passengerDocs.countries(),
optionsText: 'Key', optionsCaption: 'ChooseCountry',
value: Passport().CountryOfResidenceName">
</select>
</li>
但是它没有将类passengerDetails\u错误添加到li中
有什么想法吗?
谢谢我认为你走的路是对的。我认为您不需要更改淘汰验证代码,相反,您可以为您的案例创建一个新的绑定处理程序:
ko.bindingHandlers.parentValidationElement = {
update: function (element, valueAccessor, allBindingsAccessor) {
var cssClass = ko.utils.unwrapObservable(valueAccessor);
var obs = ko.utils.unwrapObservable(allBindingsAccessor()).value;
var decorateElement = obs.isModified() && !obs.isValid();
if (decorateElement) {
$(element).parent().addClass(cssClass);
} else {
$(element).parent().removeClass(cssClass);
}
}
}
用法如下:
<li>
<label for="">Residence:</label>
<input type="text" data-bind="value: Residence, parentValidationElement: 'passengerDetails_error'" />
</li>
住所:
Fiddle:您不需要更改内置的
validationElement
或创建一组新的计算属性。。。您可以直接在li
上使用validationElement
和正确的validationOptions
@nemesv,而您的评论对于演示如何巧妙地实现验证方法非常有用,这是如何解决Guy Z提出的问题,即按照他的明确要求将验证类应用于父元素?您的fiddle示例只会将该类应用于li项而不是ul项,除非我遗漏了一些明显的内容?@CarlEdwards尽管我的评论显示了一个不像OP想要的那样通用的解决方案,但它仍然可能是一个很好的折衷方案,OP明确表示他想要对li
元素进行验证:“但是它没有给li添加类passengerDetails\u错误任何想法?”@nemesv道歉。现在我重新阅读了op,我可以看到我错误地假设他希望类应用于- 元素,很明显他没有。我的错误!
<li>
<label for="">Residence:</label>
<input type="text" data-bind="value: Residence, parentValidationElement: 'passengerDetails_error'" />
</li>