【发布时间】:2021-12-09 15:44:42
【问题描述】:
我有一个带有用户名输入字段的表单,用于检查该字段是否为空并检查用户输入的内容是否存在于列表中。
这一半在消息无效时出现,但是如果用户输入列表中存在的名称,表单仍会提交,因为当字段为空白时表单不会提交(但这是由于需要输入标签存在)。
此外,如果用户输入的名称存在于列表中但大小写不同,则不会出现“名称已存在”消息,因为它与列表中名称的大小写不匹配。
请看我下面的代码:
<script>
function usernameFunction() {
let x = document.getElementsByName("username")[0].value;
let listNames = ["john", "sid", "paul", "jim"];
let text;
text = "";
if (x === '' || x == null) {
text = "Username cannot be blank";
}
for (let i = 0; i < listNames.length; i++) {
if (listNames[i] === x) {
text = ('The name already exists')
}
}
document.getElementById("username_errors").innerHTML = text;
}
document.addEventListener('invalid', (function () {
return function (e) {
e.preventDefault();
document.getElementsByName("username").focus();
};
})(), true);
</script>
<form method="POST" action="">
<input type="text" name="username" placeholder="username" name class="input_fields" required>
<div class="error-message" id="username_errors"></div>
<input class="save_btn" type="submit" value="Save" name="save_username" onclick="usernameFunction()">
</form>
当名称存在于列表中并忽略大小写时,如何调整我的代码以停止提交表单? - 例如 - 如果用户输入 John,john 在列表中,我希望消息“名称已存在”仍然出现并且不提交。
提前致谢
【问题讨论】:
-
x == null并非每一个都为真,因为.value将始终返回一个字符串(如果document.getElementsByName("username")[0]存在)。
标签: javascript html