【问题标题】:Enable submit button only when no error is found仅在未发现错误时启用提交按钮
【发布时间】:2022-08-12 17:54:39
【问题描述】:

我有一个简单的应用程序,我只想在没有发现错误时启用计算按钮(如果值不是数字或值小于 0,则会记录错误)。我使用 && 和 || 执行一些条件检查操作员。但是,当仅正确填写了一个输入且没有错误时,该按钮将启用。但是,当指定了明确的错误值时,该按钮将再次被禁用。

代码:https://github.com/KaustubhMaladkar/Tip-Calculator

    if (!peopleError && !billError) {       
      submit.removeAttribute(\"disabled\");
    }
    if (billError || peopleError) submit.setAttribute(\"disabled\", \"\")

现场直播:https://kaustubhmaladkar.github.io/Tip-Calculator/

  • 您可能不会因为缺少输入而发出错误。因此,如果您还应该首先检查人员和账单。第二个 if 可能只是一个 else 案例
  • @Nestoro 效果很好,但是有一个问题。如果我在一个输入中输入 0,然后在另一个输入中输入 1,则启用我的按钮
  • 这可能是由存储为字符串的值引起的。对于字符串,规则是 !!\"0\" === !!\"1\" && !!\"0\" === true,只有像 \"\" 这样的空字符串等于 false
  • @Nestro,请进一步解释并告诉我如何防止这种情况发生
  • 如果您想将其视为缺失值,您可以专门检查“0”。或使用 Number(bill) 和 Number(people) 将 \"0\" 视为数字 0。有关类型更正的所有解释都可以在这里找到:dev.to/promhize/…(请查看 \'falsy and truthy\' 部分)具体情况)

标签: javascript form-submit short-circuiting


【解决方案1】:

我要感谢@Nestoro 在我的问题上提供的 cmets,因为我的大部分(如果不是全部)答案都是基于他们的 cmets。

此代码将解决问题

if (!peopleError && !billError && Number(billElem.value) && Number(peopleElem.value)) submit.removeAttribute("disabled");
else submit.setAttribute("disabled", "");

【讨论】:

    猜你喜欢
    • 2018-10-08
    • 2022-01-15
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多