【问题标题】:Button works when the required fields are not filled after you fill and delete what is written填写并删除所写内容后未填写必填字段时,按钮有效
【发布时间】:2016-04-19 09:32:46
【问题描述】:

我有一个页面,如果没有填写名字和姓氏,addAddress 按钮将不起作用。如果您按下 addAddress 按钮,这段代码会完美运行,它会要求填写那些必填字段。当你想要它时,它会起作用,但如果你只是填充它并删除你写的东西,按钮将再次起作用。我不明白这是什么问题?

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

    else {
        self.errors.showAllMessages();

    }
};

【问题讨论】:

  • 只是拼写错误还是您检查了 FirstName 两次?
  • 它不再是未定义而是空字符串
  • @BeardedMan 如何更改 if 语句以使其正常工作?
  • @BeardedMan 这是错字,我的错
  • 我现在无法自己检查它,但不只是将 undefined 更改为 ''(空字符串)就可以解决问题吗?

标签: javascript validation knockout.js knockout-validation


【解决方案1】:

我认为当你删除它时它不再是未定义而是空字符串,所以检查空字符串应该可以解决问题

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

else {
    self.errors.showAllMessages();

}

【讨论】:

  • 考虑更新您的答案以使用!==!! 成语。目前,例如,如果 FirstName 意外地将数字零作为其值,则代码将无法按预期工作。
  • 这个答案也鼓励以不好的方式使用 ko 验证
【解决方案2】:

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

定义组

this.errors = ko.validation.group(this)

检查是否有效

this.errors().length === 0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-26
    • 2013-11-14
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多