form 是所有输入控件的容器,靠 action(提交地址)、method(GET/POST)、enctype(编码类型)三个属性定义提交行为。现代前端常用 e.preventDefault() 拦截提交,改由 fetch 异步处理——但原生校验依然好用。
HTML5 带来了免 JS 的表单验证:required、pattern、min/max、type="email"/"url"/"number"。提交前浏览器自动检查,配合 :valid / :invalid 伪类实时反馈,省下一大坨校验代码。
<form id="login" action="/api/login" method="post"> <label for="em">邮箱</label> <input id="em" name="email" type="email" required pattern=".+@.+\\..+"> <label for="pw">密码</label> <input id="pw" name="password" type="password" minlength="8" required> <button type="submit">登录</button> </form> <script> document.getElementById('login').addEventListener('submit', e => { e.preventDefault(); // 改为异步提交 fetch(e.target.action, { method: 'POST', body: new FormData(e.target) }); }); </script>