繁体   English   中英

在隐藏字段上进行Knockout.js验证

[英]Knockout.js validation on hidden fields

我正在为我的表单实施敲除验证,并且仅在显示该字段时,我才希望将其设为必填字段。 根据表单中其他字段的选择,某些控件可能会被visible:hidden或display:none隐藏。 仅在显示时如何才能使这些字段为必填字段? 我已经试过了

var name = ko.observable().extend({
        required: {
            onlyIf: function () {
                return ($('#name').is(':visible'));
            },
            message: '*** Required'
        }
    });

但这似乎不起作用,而且我不确定是否应该这样做(如果参数,您是否可以在剔除中编写类似的自定义逻辑?)。

谢谢你的帮助。

如评论中所述,您需要做的是

在ViewModel中声明一个可观察到的对象,例如说self.nameVisible=ko.observbale()在任何地方(从DB或基于其他控件选择)设置其True/False值。 稍后,您应该在验证中使用self.nameVisible() ,即使用.extendonlyIf组合使事情(隐藏/显示元素+动态条件验证)起作用。

HTML:

<input type="text" data-bind="value:name,visible:nameVisible"/>

视图模型:

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());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM