我正在尝试将学生的详细信息添加到firebase数据库中。当我单击 create 按钮时,即使在JavaScript中使用了 e.preventDefault(),页面也会刷新。 怎么了?
HTML
<div id="Add" class="workspace">
<h2 class="create">Enter Candidate Details</h2>
<form id="stu-det-form">
<input class="text1" id="cname" name="name" align="center" placeholder="Enter Candidate Full Name" required/><br>
<input class="text1" id="cfname" name="fname" align="center" placeholder="Enter Father's Name" required/>
<input class="text1" type="date" id="cdob" name="dob" align="center" placeholder="Enter DOB DD/MM/YYYY" required/><br>
<select class="select1" id="cgender" name="gender">
<option value="-Gender-">Gender</option>
<option value="Male">Male</option>
<option value="Female">Female</option>
<option value="Undisclosed">Undisclosed</option>
</select>
<input class="text1" id="caddr" name="addr"align="center" placeholder="Enter Candidate Address" required/><br>
<input class="text1" id="cphno" name="phno" align="center" placeholder="Enter Candidate Contact Number" required/><br>
<input class="text1" id="ceid" name="eid" align="center" placeholder="Enter Candidate Email Address" required/><br>
<input class="text1" id="cpwd" name="pwd" align="center" placeholder="Enter Password" required/><br>
<button class="btn-mar" id="add_btn">Create</button>
</form>
</div>
JavaScript
const studet = document.querySelector('#stu-det-form');
studet.addEventListener('submit', (e) => {
e.preventDefault();
const name = document.getElementById("cname").value;
db.collection("candidates").doc(name).set({
name: studet.name.value,
fname: studet.fname.value,
dob: studet.dob.value,
gender: studet.gender.value,
addr: studet.addr.value,
phno: studet.phno.value,
eid: studet.eid.value,
pwd: studet.pwd.value
})
.then(function(docRef) {
window.alert("Student Added Successfully");
})
.catch(function(error) {
window.alert("Error Adding Student");
});
studet.reset();
});
答案 0 :(得分:1)
如果您不希望提交表单,那么更好的方法是将事件附加到表单提交中,而不是将事件附加到表单提交中,而是在按钮上添加onclick事件并在其中运行Javascript。
<button class="btn-mar" id="add_btn" onclick="addStud()">Create</button>
function addStud(){
const studet = document.querySelector('#stu-det-form');
const name = document.getElementById("cname").value;
db.collection("candidates").doc(name).set({
name: studet.name.value,
fname: studet.fname.value,
dob: studet.dob.value,
gender: studet.gender.value,
addr: studet.addr.value,
phno: studet.phno.value,
eid: studet.eid.value,
pwd: studet.pwd.value
})
.then(function(docRef) {
window.alert("Student Added Successfully");
})
.catch(function(error) {
window.alert("Error Adding Student");
});
studet.reset();
}
答案 1 :(得分:1)
您的代码绝对正确。看来您尚未将Javascript文件引用到HTML中。在这种情况下,请使用HTML文件底部的 script 标记(位于结束</body>
标记上方)。在src属性中提供Javascript文件的相对路径。
<script src="script.js"></script>
没有其他原因,我在这里找到,因为您的代码看起来还不错。
const studet = document.querySelector('#stu-det-form');
console.log("Within the js document");
studet.addEventListener('submit', (e) => {
console.log("Form Submitted");
e.preventDefault();
const name = document.getElementById("cname").value;
// studet.reset();
});
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<div id="Add" class="workspace">
<h2 class="create">Enter Candidate Details</h2>
<form id="stu-det-form">
<input class="text1" id="cname" name="name" align="center" placeholder="Enter Candidate Full Name"/><br>
<input class="text1" id="cfname" name="fname" align="center" placeholder="Enter Father's Name"/>
<input class="text1" type="date" id="cdob" name="dob" align="center" placeholder="Enter DOB DD/MM/YYYY"/><br>
<select class="select1" id="cgender" name="gender">
<option value="-Gender-">Gender</option>
<option value="Male">Male</option>
<option value="Female">Female</option>
<option value="Undisclosed">Undisclosed</option>
</select>
<input class="text1" id="caddr" name="addr"align="center" placeholder="Enter Candidate Address"/><br>
<input class="text1" id="cphno" name="phno" align="center" placeholder="Enter Candidate Contact Number"/><br>
<input class="text1" id="ceid" name="eid" align="center" placeholder="Enter Candidate Email Address"/><br>
<input class="text1" id="cpwd" name="pwd" align="center" placeholder="Enter Password"/><br>
<button class="btn-mar" id="add_btn">Create</button>
</form>
</div>
<!-- Use script tag to reference your javascript file :)
<script src="./script.js"></script>
-->
</body>
</html>