我正在为我的表单实现 knockout validation ,并且我想让一个字段只有在显示时才需要。根据表单中其他字段的选择,某些控件可能会被 visibility:hidden 或 display:none 隐藏。我怎样才能使这些字段仅在显示时才需要?这个我试过了
var name = ko.observable().extend({
required: {
onlyIf: function () {
return ($('#name').is(':visible'));
},
message: '*** Required'
}
});
但它似乎不起作用,我不确定它是否应该(你能在 knockout onlyIf params 中编写像那样的自定义逻辑吗?)。
感谢您的帮助。
最佳答案
如评论中所述,您需要做的就是
在 ViewModel 中声明一个 observable per say self.nameVisible=ko.observbale()
从任何地方设置它的值 True/False
(来自 DB 或基于其他控制选择)。稍后您应该在验证中使用 self.nameVisible()
即 .extend
和 onlyIf
组合来制作东西(隐藏/显示元素+动态条件验证)工作。
HTML:
<input type="text" data-bind="value:name,visible:nameVisible"/>
View 模型:
var ViewModel = function () {
var self = this;
self.nameVisible = ko.observable(true); //Set it dynamically
self.name = ko.observable().extend({
required: {
message: '*** Required',
onlyIf: self.nameVisible
}
});
};
ko.applyBindings(new viewModel());
关于javascript - 隐藏字段的 Knockout.js 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33263139/