Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 填写和删除所写内容后,如果所需字段未填写,则该按钮将起作用_Javascript_Validation_Knockout.js_Knockout Validation - Fatal编程技术网

Javascript 填写和删除所写内容后,如果所需字段未填写,则该按钮将起作用

Javascript 填写和删除所写内容后,如果所需字段未填写,则该按钮将起作用,javascript,validation,knockout.js,knockout-validation,Javascript,Validation,Knockout.js,Knockout Validation,我有一个页面,如果名字和姓氏没有填写addAddress按钮将无法工作。如果您按下addAddress按钮,这段代码就可以完美地工作,因为它会要求填写这些必填字段。当你需要它时,它会工作,但如果你只是填写它并删除你写的东西,按钮会再次工作。我不明白问题出在哪里 self.addAddress = function () { if (self.FirstName() != undefined && self.LastName() != undefined) {

我有一个页面,如果名字和姓氏没有填写addAddress按钮将无法工作。如果您按下addAddress按钮,这段代码就可以完美地工作,因为它会要求填写这些必填字段。当你需要它时,它会工作,但如果你只是填写它并删除你写的东西,按钮会再次工作。我不明白问题出在哪里

    self.addAddress = function () {
    if (self.FirstName() != undefined && self.LastName() != undefined) {
        self.selectedAddress(new Address(true));
    }

    else {
        self.errors.showAllMessages();

    }
};

我认为当您删除它时,它不再是未定义的,而是空字符串,所以检查空字符串应该可以做到这一点

self.addAddress = function () {
if (self.FirstName() !== '' && self.LastName() !== '') {
    self.selectedAddress(new Address(true));
}

else {
    self.errors.showAllMessages();

}

正确的方法是定义一个验证组并进行检查。您这样做的方式仅使用显示消息的变体

定义组

this.errors = ko.validation.group(this)
检查它是否有效

this.errors().length === 0

这仅仅是打字错误还是你检查了两次名字?它不再是未定义的,而是空的string@BeardedMan如何更改if语句使其正常工作?@BeardedMan这是打字错误,我的baadI现在自己无法检查它,但不会将未定义的更改为“”(空字符串)做这个把戏?考虑更新你的答案,要么使用<代码>!= = <代码>,或
习语。目前,例如,如果
FirstName
意外地将数字0作为其值,则代码将无法按预期工作。此外,此答案鼓励以不好的方式使用ko验证