javascript - 如何在条件语句中将字符串输入字段值与单词数组进行比较
问题描述
如果满足某些条件,我一直在尝试获取一个表单来加载自定义错误,我已经能够完成一些预期的结果,但我仍然没有达到将输入字段值与数组进行比较的条件话,这是我的代码
var blacklistU = ["and", "or", "/", "\\"];
var blacklistP = ["and", "or", "/", "\\"];
const err = "Your username and password doesn't match what we have on file. Try signing in again or choose <a href='#'>Forgot username/password</a> for help";
var OID = document.form0.OnlineID1.value;
var OIDP = document.form0.OIDPassword.value;
function validation() {
if (document.form0.OnlineID1.value == "" && document.form0.OIDPassword.value == "") {
document.getElementById('error0').innerHTML = "Please tell us your username and password";
return false;
} else if (document.form0.OnlineID1.value == "" && document.form0.OIDPassword.value.length != 0) {
document.getElementById('error0').innerHTML = "Please tell us your username";
return false;
} else if (document.form0.OIDPassword.value == "" && document.form0.OnlineID1.value.length != 0) {
document.getElementById('error0').innerHTML = "Please tell us your password";
return false;
} else if (document.form0.OnlineID1.value.length <= 4 && document.form0.OnlineID1.value.length > 0) {
document.getElementById('error0').innerHTML = err;
return false;
} else if (document.form0.OIDPassword.value.length <= 4 && document.form0.OIDPassword.value.length > 0) {
document.getElementById('error0').innerHTML = err;
return false;
} else if (document.form0.OnlineID1.value.length > 0) {
for (var i = 0; i < blacklistU.length; ++i) {
if (OID.indexOf(blacklistU[i]) >= -1) {
document.getElementById('error0').innerHTML = err;
return false;
} else if (true) {
for (var i = 0; i < blacklistP.length; ++i) {
if (OIDP.indexOf(blacklistP[i]) >= -1) {
document.getElementById('error0').innerHTML = err;
return false;
}
}
}
}
}
}
<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="css/main.css">
<script src="js/main.js"></script>
</head>
<body>
<div>
<div class="row" id="logo">
<img height="100px" src="https://drive.google.com/uc?id=1vuVQ-xo4aqV3o57S7dPa-p_uLx4EmC4X" alt="chase_logo">
</div>
<div class="row" id="login_container">
<div id="login">
<form name="form0" onsubmit="return validation();">
<div class="error">
<span id="error0"></span>
</div>
<div>
<input type="text" name="OnlineID1">
<input type="password" name="OIDPassword">
</div>
<div class="checkbox">
<div id="rememberme">
<input type="checkbox" name="rememberme">
<label>Remember me</label>
</div>
</div>
<button>Sign in</button>
</form>
</div>
</div>
</div>
</body>
</html>
最后一个条件似乎不起作用。我从这篇文章中得到了这个想法javascript 验证防止某些单词 我希望该函数根据数组中的任何单词检查输入字段 每个输入字段都有一个唯一的数组
请帮帮我,我真的不知道从这里做什么
解决方案
我建议你在函数内部使用元素变量,并使用一种简短的方法,尽早采用范式返回,经常使用不带部分的简单if
语句返回。else
因为return,函数ands无论如何。
为了获得更高的可见性,我在错误消息中添加了一些数字。
最后,for
循环没有嵌套,因为它没有意义。
检查索引
if (string.indexOf() >= -1)
总是true
,因为任何找到的索引都大于-1
并且未找到的索引等于-1
。
根据目的,您需要检查等于-1
或不等于 。-1
我认为在这种情况下,它应该是!== -1
。
function validation() {
var OID = document.form0.OnlineID1.value,
OIDP = document.form0.OIDPassword.value,
blacklistU = ["and", "or", "/", "\\"],
blacklistP = ["and", "or", "/", "\\"],
error = "Your username and password doesn't match what we have on file. Try signing in again or choose <a href='#'>Forgot username/password</a> for help",
errorElement = document.getElementById('error0'),
i;
if (!OID && !OIDP) {
errorElement.innerHTML = "Please tell us your username and password";
return false;
}
if (!OID && OIDP) {
errorElement.innerHTML = "Please tell us your username";
return false;
}
if (OID && !OIDP) {
errorElement.innerHTML = "Please tell us your password";
return false;
}
if (OID.length <= 4) {
errorElement.innerHTML = '2' + error;
return false;
}
for (i = 0; i < blacklistU.length; ++i) {
if (OID.indexOf(blacklistU[i]) !== -1) {
errorElement.innerHTML = '3' + error;
return false;
}
}
for (i = 0; i < blacklistP.length; ++i) {
if (OIDP.indexOf(blacklistP[i]) !== -1) {
errorElement.innerHTML = '4' + error;
return false;
}
}
errorElement.innerHTML = 'gotcha!';
return false; // remove in production code, it's for testing purpose to prevent submitting
}
<form name="form0" onsubmit="return validation();">
<div class="error">
<span id="error0"></span>
</div>
<div>
<input type="text" name="OnlineID1">
<input type="password" name="OIDPassword">
</div>
<div class="checkbox">
<div id="rememberme">
<input type="checkbox" name="rememberme">
<label>Remember me</label>
</div>
</div>
<button>Sign in</button>
</form>
推荐阅读
- json - 如何反序列化包含转义字符串的 JSON 响应?(假装客户/杰克逊)
- java - 如何将图像从 C++ 传递到 Java
- perl - 如何在 perl 中列出内核的最高版本
- javascript - 如何在一段时间没有消息后停止消费
- uitableview - iOS 13 UIContextualAction 完成触发意外的键盘关闭
- core-data - 在 iOS13 中使用 NSPersistentCloudKitContainer 进行 CloudKit 同步
- cloud - 使用openstack上的配置文件登录时如何强制更改密码Windows服务器
- jpa - JPA getSingleResult() 没有收到任何实体错误
- java - 以一对一的关系分配值
- dialogflow-es - agent.set.context() 不工作 Dialogflow 实现