通过new FormData提交简单数据

通过new FormData提交简单数据

效果示例图


代码

复制代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			* {
				padding: 0px;
				margin: 0px;
				box-sizing: border-box;
			}

			input,
			input:focus {
				border-radius: 4px;
				outline: none;
				padding: 0px 12px;
			}

			input::placeholder,
			input::-moz-placeholder,
			input::-webkit-input-placeholder {
				color: #999;
			}

			.form-wrap {
				width: 600px;
				margin: 12px auto;
			}

			.form-item {
				display: flex;
				flex-direction: row;
				align-items: center;
				margin-bottom: 12px;
			}

			.form-item-label {
				width: 100px;
			}

			.form-item-content {
				--width: 100px;
				width: calc(100% - var(--width));
				display: flex;
				flex-direction: row;
				align-items: center;
			}

			.form-item-content input[type='text'] {
				border: 1px solid #dcdcdc;
				width: 100%;
				height: 40px;
			}

			.form-item-content input[type='radio'] {
				border: 1px solid #dcdcdc;
				width: 20px;
				height: 20px;
				margin-left: 12px;
				cursor: pointer;
			}

			.form-item-content label {
				margin-left: 12px;
			}

			.form-footer {
				width: 100%;
				display: flex;
				flex-direction: row;
				padding-left: 100px;
			}

			.form-btn {
				border: 1px solid #00a2ef;
				border-radius: 8px;
				width: 100px;
				height: 40px;
				margin-right: 12px;
				cursor: pointer;
			}
		</style>
	</head>
	<body>
		<form class="form-wrap" id="myForm" name="myForm">
			<div class="form-item">
				<label class="form-item-label">姓名:</label>
				<div class="form-item-content">
					<input type="text" name="username" value="" />
				</div>
			</div>
			<div class="form-item">
				<label class="form-item-label">年龄:</label>
				<div class="form-item-content">
					<input type="text" name="userAge" value="" />
				</div>
			</div>
			<div class="form-item">
				<label class="form-item-label">性别:</label>
				<div class="form-item-content">
					<label for="woman">女</label>
					<input id="woman" type="radio" name="userSex" value="0" />
					<label for="man">男</label>
					<input id="man" type="radio" name="userSex" value="1" />
				</div>
			</div>
			<div class="form-item">
				<label class="form-item-label">孩子one:</label>
				<div class="form-item-content">
					<input type="text" name="children[0][name]" value="" />
				</div>
			</div>
			<div class="form-item">
				<label class="form-item-label">年龄one:</label>
				<div class="form-item-content">
					<input type="text" name="children[0][age]" value="" />
				</div>
			</div>
			<div class="form-item">
				<label class="form-item-label">孩子two:</label>
				<div class="form-item-content">
					<input type="text" name="children[1][name]" value="" />
				</div>
			</div>
			<div class="form-item">
				<label class="form-item-label">年龄two:</label>
				<div class="form-item-content">
					<input type="text" name="children[1][age]" value="" />
				</div>
			</div>

			<div class="form-footer">
				<button class="form-btn" type="reset">重置</button>
				<button class="form-btn" id="submitBtn">提交</button>
			</div>
		</form>

	</body>
	<script type="text/javascript">
		document.querySelector("#submitBtn").addEventListener("click", (e) => {
			//阻止事件向上冒泡
			e.preventDefault();
			const myForm = document.querySelector("#myForm");
			const formData = new FormData(myForm);
			const formJson = Object.fromEntries(formData.entries());
			console.log("[]", formJson)
		})
	</script>
</html>
相关推荐
只可远观21 分钟前
Flutter Android打包和发布Build APK
前端·flutter·dart
BillKu37 分钟前
Vue3 + TypeScript 操作第三方库(Element Plus 的 ElTable)的内部属性
前端·javascript·typescript
嘉小华38 分钟前
深入浅出Android SurfaceView:高性能绘制
前端
古夕1 小时前
webpack 之 Tree-shaking
前端·面试·webpack
沐森1 小时前
websockt vs sse
前端·ai编程
ice851 小时前
揭秘JavaScript中“一切皆对象”:包装对象机制和原型链继承
javascript·面试
朕么办1 小时前
微信原生开发的程序员有福了,推荐两款插件让你VScode支持WXML Emmet
前端
谢尔登1 小时前
【Three.js】初识 Three.js
开发语言·javascript·ecmascript
风铃喵游1 小时前
Axion: 一次搞定axios请求库的各种能力封装
前端
受之以蒙1 小时前
Rust+Wasm利器:用wasm-pack引爆前端性能!
前端·rust·webassembly