javascript - 如何在用户输入 JavaScript 的 if 语句中包含 3 个条件
问题描述
JavaScript:我想检查用户输入是否满足 if 语句中的 3 个条件。我不知道如何制作&&
和|
处理单个 if 语句。我有|
第一个条件之后,但&&
没有考虑到,我可以将输入框留空,它仍然会将我重定向到页面。我尝试了多种方法,但我没有让它工作。请帮助并提前感谢您。
JavaScript
function valForm() {
var firstVal = document.getElementById("nextId").value;
var secondVal = document.getElementById("licenseId").value;
if (
(firstVal == "MB3804") | (firstVal == "mb3804") &&
(secondVal.length == 6) | 7
) {
window.location.href = "google.com";
}
}
HTML
<input
type="text"
placeholder="License Plate"
id="licensed"
autocomplete="off"
/>
<input
type="text"
placeholder="Ticket ID"
id="nextId"
autocomplete="off"
/>
<button class="btn btn-primary display-4" type="button" onclick="valForm()">next</button>
解决方案
if (
(firstVal == "MB3804") | (firstVal == "mb3804") &&
(secondVal.length == 6) | 7
)
应该是
if (
(firstVal === "MB3804" || firstVal == "mb3804") &&
(secondVal.length === 6 || secondVal.length === 7)
)
这里有几件事需要注意:
===
代替的使用==
:见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness- 使用
||
(逻辑或)而不是|
(按位或) - 括号放置有助于明确操作顺序
paulsm 上面的评论也非常有效,如果这对您的情况有意义,您可以使用不区分大小写的字符串比较而不是 2 个单独的比较。当然,如果您希望条件对MB3804
and成功但对andmb3804
失败,那么不区分大小写的字符串比较将不合适,但如果所有四种情况都被认为是“好”,那么它就很有意义了Mb3804
mB3804
if (firstVal === "MB3804" || firstVal === "mb3804") {...}
可以改写为
if (firstVal.toLowerCase() === "mb3804") {...}
推荐阅读
- raspberry-pi - 如何使 pkg-config 找到 libpcap
- powershell - Get-RDUsersession 在任务计划程序中不起作用
- c++ - 当命令行参数为空时,C++ 执行操作
- asp.net-core-5.0 - 如何在 ASP.Net Core 5 中将共享代码添加到“_layout.cshtml”中
- node-red - 如何使用 NODE RED 确认事件警报
- firebase - 构建前下载数据 - 方法
- pybind11 - 自定义 Libtorch 函数到 pybind?
- javascript - 如何在单击按钮时将 node.js Web 应用程序的页面转换为 pdf?
- python - 在 Jupyter 上的矩阵中存储名称或单词
- r - 从泛型函数创建新方法会在 R 中产生错误