仅在未发现错误时启用提交按钮

Enable submit button only when no error is found

提问人:Kaustubh Maladkar 提问时间:6/8/2022 更新时间:8/12/2022 访问量:196

问:

我有一个简单的应用程序,我只想在未发现错误时启用计算按钮(如果值不是数字或值小于 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/

JavaScript 表单 - 提交 短路

评论

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

答:

0赞 Kaustubh Maladkar 6/8/2022 #1

我要感谢@Nestoro对我的问题的评论,因为我的大部分(如果不是全部)回答都是基于他们的评论。

此代码将解决问题

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