js控制form提交

form表单提交,之前有个下载的项目接口,需要上url上边传超级多东西,但是 url是限制长度的 每个浏览器限制的url长度还不一样,所以就想到用form表单的action提交表单。

form标签 定义和用法 详细了解请点击
标签用于为用户输入创建 HTML 表单。

表单能够包含 input 元素,比如文本字段、复选框、单选框、提交按钮等等。

表单还可以包含 menustextareafieldsetlegend 和 label 元素

表单用于向服务器传输数据。(我们要用到的)

form提交数据用法

在这里我就写个用js调用事件提交表单。表单不在页面上显示的例子。

下面这段代码 form标签的属性 method 就是请求方法 跟 jquery的ajax一样这里我使用post请求form标签的属性 enctype 规定发送表单数据之前如何对其进行编码、form标签的属性 target="_blank" 就相当于在新页面打开 我这里做的是下载 所以要在新页面打开。

 <form method="post" enctype="application/x-www-form-urlencoded" id="form-submit" target="_blank">
   <input type="hidden" name="account" value="多毛大叔爱萝莉"/>
   <input type="hidden" name="password" value="7758521"/>
</form>
<button type="button" id="go">go</button>
//这里的name就是相当于post属性的参数 value就是你传的值 type是hidden 是因为我不想再页面上看到他所以让他隐藏了
复制代码

接下来我们用js调用事件 动态给 form 添加 action 属性让form知道我们要让他请求拿个位置。

// js 获取form表单
var form_submit = document.getElementById('form-submit');
// js获取按钮
var go = document.getElementById('go');
// 当点击go时执行事件
go.addEventListener('click',function(){
  // 动态给form表单设置请求位置
  form_submit.active = "http://www.daxuehua.cn";
  // 让form表单提交
  form_submit.submit()
})
复制代码

这样子就可以解决如果 url的值太长没法下载东西的问题

转载于:https://juejin.im/post/5b62c1daf265da0fa3330c45

<think>嗯,用户问的是如何用JavaScript控制HTML表单的提交,并需要示例。首先,我需要回忆一下表单提交的基本机制。通常,表单提交可以通过点击提交按钮或者按回车键触发,默认行为会导致页面刷新,这可能不是用户想要的。所以用户可能想阻止默认提交,改用AJAX或者其他处理方式。 接下来,我应该考虑不同的方法。比如,使用onsubmit事件处理函数,或者给提交按钮添加点击事件。记得要阻止默认行为,可以用event.preventDefault()。然后,需要验证表单数据,可能涉及到获取各个输入字段的值,检查是否为空、格式是否正确等。这部分可能需要正则表达式,比如邮箱验证。 然后,用户可能需要示例代码。我应该给出一个简单的HTML表单结构,然后展示如何用JavaScript拦截提交,进行验证,最后用AJAX发送数据。同时,要提到现代浏览器可能支持Fetch API,或者传统的XMLHttpRequest。另外,动态绑定事件处理程序也是个好点,可以提到addEventListener,这样比内联的on属性更灵活。 还要考虑兼容性问题吗?比如,旧版IE可能不支持preventDefault(),但大多数现代浏览器没问题。不过用户可能更关心主流用法,所以可以忽略太老的浏览器。 另外,是否需要提到表单校验的HTML5属性,比如required、pattern?虽然有用,但用户的问题明确要求JavaScript控制,所以可能不需要深入,但可以稍微提及作为补充。 可能用户的实际需求是防止重复提交,或者异步提交数据,比如单页应用。所以示例中最好包括如何处理成功和错误的响应,比如用.then和.catch处理Fetch返回的Promise。 最后,相关问题部分需要生成几个相关的延伸问题。比如,如何防止重复提交,表单验证的其他方法,或者如何用jQuery简化操作。这些能帮助用户进一步探索。</think># JavaScript控制HTML表单提交的方法与示例 ## 一、基础控制方法 1. 通过`onsubmit`事件拦截表单提交 ```html <form id="myForm" onsubmit="return validateForm()"> <input type="text" name="username" required> <button type="submit">提交</button> </form> <script> function validateForm() { const username = document.forms["myForm"]["username"].value; if (username === "") { alert("用户名不能为空"); return false; // 阻止表单提交 } return true; // 允许提交 } </script> ``` 此方法会先执行验证逻辑再决定是否提交表单[^1] 2. 使用`addEventListener`动态绑定 ```javascript document.getElementById("myForm").addEventListener("submit", function(e) { e.preventDefault(); // 阻止默认提交行为 // 自定义处理逻辑 console.log("表单已拦截,准备异步提交"); submitFormAsync(this); }); ``` ## 二、进阶控制技巧 1. AJAX异步提交(Fetch API示例) ```javascript async function submitFormAsync(form) { const formData = new FormData(form); try { const response = await fetch("/submit", { method: "POST", body: formData }); if (!response.ok) throw new Error("网络响应异常"); const result = await response.json(); console.log("提交成功:", result); } catch (error) { console.error("提交失败:", error); } } ``` 2. 动态表单验证 ```javascript function validateEmail(email) { const re = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; return re.test(String(email).toLowerCase()); } document.querySelector("#email").addEventListener("blur", function() { if (!validateEmail(this.value)) { this.classList.add("error"); this.nextElementSibling.textContent = "邮箱格式不正确"; } }); ``` ## 三、最佳实践建议 1. 组合使用HTML5验证属性与JavaScript验证 ```html <input type="email" name="email" required pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$"> ``` 2. 防止重复提交方案 ```javascript let isSubmitting = false; form.addEventListener("submit", async (e) => { if (isSubmitting) return; isSubmitting = true; submitBtn.disabled = true; submitBtn.textContent = "提交中..."; try { await submitFormAsync(form); } finally { isSubmitting = false; submitBtn.disabled = false; submitBtn.textContent = "提交"; } }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值