【发布时间】:2021-01-15 14:48:46
【问题描述】:
我正在尝试手动验证 HTML/CSS/JS 中的表单。在最基本的层面上,我想确保用户不能为名字和姓氏输入空白值。问题是,每当我尝试更改或更新用户所写内容的输入时,它都不会保存。一切都保持“空”。同样令人非常沮丧的是,在我的 JS 代码中,当我尝试使用 IF 语句来检查名字是否没有值或为空时,我会立即收到一条错误消息,即“first”为空,因为无论如何它都为空什么,如果你输入了什么,但它甚至没有完成它的工作。我正在使用 if 语句来检查它是否为空,而不是让它对它做某事,那么如果条件为真,为什么只要遵循它下面的代码就会出现问题?我已经坐了一个小时,它变得难以忍受。我是 JS 新手,我真的不明白 IF 语句这样简单的东西对我不起作用。
HTML 表单:
<form action="" method="get" id="my-form">
<h1>Contact Us</h1>
<div class="txtb">
<label>First Name :</label>
<input type="text" id = "firstname" placeholder="Enter Your First Name">
</div>
<div class="txtb">
<label>Last Name :</label>
<input type="text" id = "lastname" placeholder="Enter Your Last Name">
</div>
<div class="txtb">
<label>Email :</label>
<input type="email" id = "email" placeholder="Enter Your Email" required>
</div>
<div class="txtb">
<label>Date Visited :</label>
<input type="date" id = "date" required>
</div>
<div class="txtb">
<label>What did you think of it when you visited? :</label>
<textarea id = "msg" required></textarea>
</div>
<button type='submit'>Submit</button>
<!--onclick = form.submit()-->
</form>
</div>
<div id="error"></div>
新的 JS:
let first = document.getElementById("firstname").value;
let last = document.getElementById("lastname").value;
let email = document.getElementById("email").value;
let msg = document.getElementById("msg").value;
let date = document.getElementById("date").value;
let form = document.getElementById("my-form");
let errorEl= document.getElementById("error");
function formChanged() {
first = document.getElementById("firstname");
last = document.getElementById("lastname");
email = document.getElementById("email");
msg = document.getElementById("msg");
date = document.getElementById("date");
console.log(first,last,email,msg,date,form)
}
form.addEventListener('submit', (e) => {
let messages = []
console.log(first, last)
if (first === '' || first == null){
messages.push('First name is required')
}
if (last === '' || last == null){
messages.push('Last name is required')
}
if (messages.length>0){
e.preventDefault()
errorEl.innerText = messages.join(', ')
}
console.log(first, last)
})
//window.alert(messages)
如果有人知道手动执行此操作的更好方法,如果您能分享它,将不胜感激。此时,除了消息数组保持不变外,一切正常,所以我将添加一些内容以删除消息,如果 first 不是 == null 或 ''
【问题讨论】:
-
你在哪里插入了
script标签? -
在正文结束标签下方。
-
我不太明白。你把
<script>放在体外了吗?? -
是的。我发誓只要它在正文中的代码之后就没有区别?在这种情况下,无论如何,它不会,因为我得到了完全相同的错误和问题。
-
什么错误?您应该准确指定问题中的错误
标签: javascript html css forms if-statement