当前位置: 首页 > Web前端 > HTML5

如何用JS一次获取HTML表单的所有字段?

时间:2023-04-05 22:35:26 HTML5

作者:VALENTINOGAGLIARDI译者:前端小智来源:valentinog有梦想,有干货,微信搜索【大千世界】追踪这位凌晨还在洗碗的洗碗智慧。本文已收录到GitHubhttps://github.com/qq449245884/xiaozhi,里面有完整的测试站点、资料和我的一线厂商访谈系列文章。Q:如何用JS一次获取HTML表单的所有字段?考虑一个简单的HTML表单,用于将任务保存在待办事项列表中:

username简介任务submit上面的每个字段都有对应的type、ID和name属性,以及关联的label。用户单击提交按钮后,我们如何从该表单中获取所有数据?有两种方法:一种是黑科技,一种是比较干净,也是最常用的方法。为了演示此方法,我们首先创建form.js并将其导入到文件中。从事件目标获取表单字段首先,我们在表单上为Submit事件注册一个事件侦听器以停止默认行为(它们将数据发送到后端)。然后,使用this.elements或event.target.elements访问表单字段:相反,如果我们需要动态添加更多字段以响应某些用户交互,那么我们需要使用FormData。使用FormData首先,我们为表单上的提交事件注册一个事件侦听器以停止默认行为。接下来,我们从表单构造一个FormData对象:constform=document.forms[0];form.addEventListener("提交",function(event){event.preventDefault();constformData=newFormData(this);});除了append()、delete()、get()、set()之外,FormData还实现了Symbol.iterator。这意味着它可以用for...of遍历:constform=document.forms[0];form.addEventListener("submit",function(event){event.preventDefault();constformData=newFormData(this);for(constformElementofformData){console.log(formElement);}})除了以上方法,entries()方法获取表单对象form:constform=document.forms[0];form.addEventListener("submit",function(event){event.preventDefault();constformData=newFormData(this);constentries=formData.entries();constdata=Object.fromEntries(entries);});这也适用于Object.fromEntries()(ECMAScript2019)为什么这有效?如下:constform=document.forms[0];form.addEventListener("submit",function(event){event.preventDefault();constformData=newFormData(this);constentries=formData.entries();constdata=Object.fromEntries(entries);//发送输出到RESTAPIfetch("https://some.endpoint.dev",{method:"POST",body:JSON.stringify(data),headers:{"Content-Type":"application/json"}})。然后(/**/)。抓住(/**/);});一旦你有了这个对象,你就可以使用fetch来发送有效负载注意:如果你在表单字段上省略了name属性,那么FormData对象中不会生成任何内容。总结要从HTML表单中获取所有字段,您可以使用:this.elements或event.target.elements,前提是所有字段都是预先已知的并且它们保持稳定。使用FormData构建一个包含所有字段的对象,之后可以对其进行转换、更新或发送到远程API。*原文:https://www.valentinog.com/bl...代码部署后可能出现的bug无法实时获知。之后为了解决这些bug,花费了大量的时间在日志调试上。在这里给大家推荐一款好用的BUG监控工具Fundebug。交流文章每周更新一次。可以微信搜索【大千世界】立即阅读,回复【福利】还有很多前端视频等着你。本文已收录到GitHubhttps://github.com/qq449245884/xiaozhi,欢迎Star。

最新推荐
猜你喜欢