淘汰赛:如果一个领域被填满,如何进行输入,如果一个领域是空的,则不需要输入

时间:2014-03-18 06:45:35

标签: javascript html input knockout.js

我想制作一个密码更改表单。它应该随时显示在设置页面上,不需要填写。但是,如果填写了三个字段(旧密码,新密码,确认)中的至少一个,则应该需要其他字段。

我可以实现吗?

这是我的临时代码

    self.oldPass = ko.observable().extend({ minLength: 6, maxLength: 20, validation: { validator: checkEqual, message: 'Неверный пароль.', params: self.password } });
    self.newPass = ko.observable().extend({ minLength: 6, maxLength: 20, validation: { validator: newPassValid, message: 'Неверный пароль.' } });
    self.newPassCheck = ko.observable().extend({ minLength: 6, maxLength: 20, validation: { validator: checkEqual, message: 'Пароли не совпадают.', params: self.newPass } });

function newPassValid(pass){

}
function checkEqual(val, other){
     return val == other();
}

1 个答案:

答案 0 :(得分:1)

您可以尝试Conditional Validation with onlyIf

self.oldPass = ko.observable().extend({
    required: {           
        onlyIf: function () { 
            var isNewPassFilled = self.newPass() && self.newPass().length > 0;
            var isNewPassCheckFilled = self.newPassCheck() && self.newPassCheck().length > 0;
            return isNewPassFilled || isNewPassCheckFilled; 
        }
    },
    minLength: 6,
    maxLength: 20, 
    validation: { 
        validator: checkEqual,
        message: 'Wrong password',
        params: self.password 
    },
});