【发布时间】:2016-12-11 06:23:25
【问题描述】:
有没有办法通过表单发布将值作为一个参数发布?
我有一个包含多个复选框组的表单,用户可以在其中选择多个选项。
<form id="form" action="url" method="post">
<input type="checkbox" name="option" id="first" value="1">
<input type="checkbox" name="option" id="first" value="2">
<input type="checkbox" name="option" id="first" value="3">
<input type="checkbox" name="option" id="first" value="4">
<input type="checkbox" name="option2" id="second" value="1">
<input type="checkbox" name="option2" id="second" value="2">
<input type="checkbox" name="option2" id="second" value="3">
<input type="checkbox" name="option2" id="second" value="4">
<input type="submit" name="submit" id="button">
我还编写了一些 Jquery,它连接每个名称的值并用逗号分隔它们,这样输出看起来像这样,我可以通过控制台看到它:
$("form").submit(function(){
var arr=[];
$('input:checked[name="option"]').each(function(){
arr.push($(this).val());
});
$('#first').val(arr.join(','));
console.log('#first').val();
});
Console.log 输出:
option: 1,2,3,4
但是,当我提交表单时,值会像这样(解析的版本)分开传递,并且不使用我编写的 Jquery 代码。
option: 1
option: 2
option: 3
option: 4
实际的查询字符串如下所示:
option=1&option=2&option=3&option=4
我想要完成的是参数被聚合或分组,以便最终输出看起来像这样
option=1,2,3,4&option2=1,2,3,4...
我不确定为什么它不使用 Jquery 写入值
【问题讨论】:
-
你的ajax在哪里?此外,您有多个具有相同 ID 的元素。而不是改变
$("#first").val()你应该将它存储在一个变量中 -
我没有使用 AJAX,它必须通过 POST。
-
当您提交表单时,在表单的
action属性中标识的页面会被加载,并且该页面存储在内存中的每个值都会消失。即使不是这样,Javascript 变量和表单字段也是两个完全不相关的东西。 -
这听起来有点像您正在尝试在提交表单之前和之后处理表单数据。为什么要加倍工作?为什么不合并接收表单数据的页面上的值(由
action属性标识的值)?