Javascript 在提交时获取复选框值

Javascript 在提交时获取复选框值,javascript,html,Javascript,Html,假设我有一个带有几个复选框的表单。无论何时提交该表单,我都希望打印所选复选框的所有值 <form> <input type="checkbox" id="product1" name="product1" value="12"> <input type="checkbox" id="product2" name="product1" value="13"> <input type="checkbox" id="product3" name="produc

假设我有一个带有几个复选框的表单。无论何时提交该表单,我都希望打印所选复选框的所有值

<form>
<input type="checkbox" id="product1" name="product1" value="12">
<input type="checkbox" id="product2" name="product1" value="13">
<input type="checkbox" id="product3" name="product1" value="14">
<button type="submit">Subscribe</button>
</form>
这方面的用例如下所示:

我有一个网店,我想添加多个产品到我的购物车一次

我有一个基本的链接,看起来像:test.com/addtocart?
在问号之后,我需要添加由逗号分隔的复选框的值。例如,如果选择了值12和14,则应生成如下链接:test.com/addtocart?12,14。如果选中复选框,则可以循环检查复选框并打印值

const form=document.querySelector'form'; form.addEventListener'submit',e=>{ e、 防止违约; const values=Array.fromdocument.queryselectoral'input[type=checkbox]:选中' .mapitem=>item.value 。加入“,”; console.log`test.com/addtocart?${values}`; }; 订阅
这里有一个方法可以做到这一点。如果选中复选框,则可以循环检查复选框并打印值

const form=document.querySelector'form'; form.addEventListener'submit',e=>{ e、 防止违约; const values=Array.fromdocument.queryselectoral'input[type=checkbox]:选中' .mapitem=>item.value 。加入“,”; console.log`test.com/addtocart?${values}`; }; 订阅
一个普通的js解决方案可能就是这样

document.querySelectorbutton.addEventListener'click',函数E{ e、 防止违约; var form=document.querySelectorform; Array.fromform.querySelectorAllinput.forEachfunctioninp{ ifinp.checked==true{console.loginp.value;} }; }; 订阅
一个普通的js解决方案可能就是这样

document.querySelectorbutton.addEventListener'click',函数E{ e、 防止违约; var form=document.querySelectorform; Array.fromform.querySelectorAllinput.forEachfunctioninp{ ifinp.checked==true{console.loginp.value;} }; }; 订阅
作为31piy答案的副本,这里是一个带有本地js的答案

函数$selector{ 返回文档。查询选择器选择器选择器; } 函数$$选择器{ return document.queryselector或allselector; } $'form'.addEventListener'submit',functionevent{ 违约事件; $$'输入[类型=复选框]:已选中。forEach$cbox=>{ log$cbox.value; }; 返回false; }; 订阅
作为31piy答案的副本,这里是一个带有本地js的答案

函数$selector{ 返回文档。查询选择器选择器选择器; } 函数$$选择器{ return document.queryselector或allselector; } $'form'.addEventListener'submit',functionevent{ 违约事件; $$'输入[类型=复选框]:已选中。forEach$cbox=>{ log$cbox.value; }; 返回false; }; 订阅
最简单的解决方案,也返回正确的链接

var form=document.querySelector'form'; var选择=; var-link=https://example.com?'; 表单.addEventListener'submit',函数E{ e、 防止违约; document.queryselectoral'input[type=checkbox]' .forEachfunctionitem{ 如果项目已选中{ 选择项=选择项+项.值+','; } } 链接=链接+选择; console.loglink; }; 订阅
最简单的解决方案,也返回正确的链接

var form=document.querySelector'form'; var选择=; var-link=https://example.com?'; 表单.addEventListener'submit',函数E{ e、 防止违约; document.queryselectoral'input[type=checkbox]' .forEachfunctionitem{ 如果项目已选中{ 选择项=选择项+项.值+','; } } 链接=链接+选择; console.loglink; }; 订阅
我的纯javascript示例可以跨bowser和旧浏览器使用。 每次选择/取消选择一个项目时,它都会更改表单操作,但是如果有其他代码生成请求,则可以将链接保留为字符串。 这样,当您提交表单时,url将始终是最新的,仅包含所选项目:

函数getCheckedOptionsform{ var inputs=form.children;//获取表单中的所有输入 var products=[];//将存储所选产品值 //循环所有输入 对于变量i=0;i我的纯javascript示例可以跨bowser和旧浏览器使用。 每次选择/取消选择一个项目时,它都会更改表单操作,但是如果有其他代码生成请求,则可以将链接保留为字符串。 这样,当您提交表单时,url将始终是最新的 仅适用于所选项目:

函数getCheckedOptionsform{ var inputs=form.children;//获取表单中的所有输入 var products=[];//将存储所选产品值 //循环所有输入 对于变量i=0;i具有多个具有相同ID的元素是无效的HTML。您应该修复它。@CertainPerformance我忽略了这一点,现在修复了它。具有多个相同ID的元素是无效的HTML。你应该解决这个问题。@CertainPerformance我忽略了这个问题,现在就解决了。你认为有办法删除链接上的最后一个逗号吗?你认为有办法删除链接上的最后一个逗号吗?@31piy非常感谢你的努力。我接受这个,很好的回答。@31piy非常感谢你的努力。我接受这个,很好的回答。