javascript - 当表单为空时函数运行
问题描述
我正在尝试创建一个表单,如果未填写表单,则传递的函数将不会提交。但是使用下面的代码,只要表单为空,函数仍然会运行。
const ELS_pages = document.querySelectorAll(".page");
const ELS_buttons = document.querySelectorAll("[data-page]");
console.log(ELS_pages);
const submit = document.querySelector(".submit");
const goToPage = (id) => {
ELS_pages.forEach((EL) => EL.classList.toggle("u-none", EL.id !== id));
};
ELS_buttons.forEach((EL) =>
EL.addEventListener("click", () => {
console.log(EL.dataset.page);
goToPage(EL.dataset.page);
})
);
const myForm = document.querySelector("#form-id");
const name = document.querySelector("#name");
const pin = document.querySelector("#pin");
myForm.addEventListener("submit", function (e) {
e.preventDefault();
if (name.value !== "" && pin.value !== "") {
console.log("white");
// submit.dataset.page = settings;
submit.addEventListener("click", function () {
goToPage(submit);
});
} else {
alert("you need to input");
}
});
nav {
display: flex;
}
nav a {
color: #00f;
padding: 5px 10px;
cursor: pointer;
}
/* Utility classes */
.u-none {
display: none;
}
<div class="main-container">
<div class="page" id="page-login">
<h1>Welcome</h1>
<button type="button" data-page="page-main">ENTER</button>
</div>
<div class="page u-none" id="page-main">
<nav>
<a data-page="page-settings">User Settings</a>
<a data-page="page-login">Logout</a>
</nav>
<h1>MAIN PAGE</h1>
<form action="" id="form-id">
<label for="name">Name</label>
<input type="text" id="name" />
<label for="pin">Pin</label>
<input type="text" id="pin" />
<button type="submit" class="submit" data-page="page-settings">
Submit
</button>
</form>
</div>
<div class="page u-none" id="page-settings">
<nav>
<a data-page="page-main">Back to Main</a>
<a data-page="page-login">Logout</a>
</nav>
<h1>SETTINGS PAGE</h1>
</div>
</div>
解决方案
你需要这样的东西:
HTML:
<div class="main-container">
<div class="page" id="page-login">
<h1>Welcome</h1>
<button type="button" data-page="page-main">ENTER</button>
</div>
<div class="page u-none" id="page-main">
<nav>
<a data-page="page-settings">User Settings</a>
<a data-page="page-login">Logout</a>
</nav>
<h1>MAIN PAGE</h1>
<form name="myForm" onsubmit="return validateForm()" action="" id="form-id">
<label for="name">Name</label>
<input type="text" id="name" name="fname" />
<label for="pin">Pin</label>
<input type="text" id="pin" name="fname1"/>
<button type="submit" class="submit">
Submit
</button>
</form>
</div>
<div class="page u-none" id="page-settings">
<nav>
<a data-page="page-main">Back to Main</a>
<a data-page="page-login">Logout</a>
</nav>
<h1>SETTINGS PAGE</h1>
</div>
</div>
CSS:
nav {
display: flex;
}
nav a {
color: #00f;
padding: 5px 10px;
cursor: pointer;
}
/* Utility classes */
.u-none {
display: none;
}
JS
const ELS_pages = document.querySelectorAll(".page");
const ELS_buttons = document.querySelectorAll("[data-page]");
console.log(ELS_pages);
const submit = document.querySelector(".submit");
const goToPage = (id) => {
ELS_pages.forEach((EL) => EL.classList.toggle("u-none", EL.id !== id));
};
ELS_buttons.forEach((EL) =>
EL.addEventListener("click", () => {
console.log(EL.dataset.page);
goToPage(EL.dataset.page);
})
);
const myForm = document.querySelector("#form-id");
const name = document.querySelector("#name");
const pin = document.querySelector("#pin");
function validateForm() {
var x = document.forms["myForm"]["fname"].value;
var x1 = document.forms["myForm"]["fname1"].value;
if (x == "" || x == null || x1 == "" || x1 == null ) {
return false;
}
}
我刚刚添加了 validateForm() 函数以在您的表单中签入 onsumbit
推荐阅读
- python - 读取多个excel文件并将数据存储在字典win32中
- azure-media-services - (ResourceGroupNotFound) 资源组 '????' 创建 Azure 媒体服务帐户时找不到
- delphi - 如何更改语音语言
- python - Python "in" 和 "==" 混淆
- python - 如何通过使用数据框在某一列上使用随机数
- c - 在 C 中对齐使用多少内存?
- html - 如何保持图标在 div 内严格对齐?
- html - 角度5:表格行内的模板绑定
- python - Flask-Rebar 规则验证
- node.js - Alexa 技能学习:TypeError:无法读取未定义的属性“值”