提交html选择像复选框一样的多维数组

时间:2017-11-02 04:21:29

标签: javascript html forms select

我尝试以与某些复选框相同的方式提交选择字段输入值。

复选框使用一个索引数组,其中group id作为索引,并提供给php服务器的值,例如。

<input type="checkbox" name="group[33]">
<input type="checkbox" name="group[34]">

我想要做的是使用相同的格式,但同时使用复选框和选择字段来发送相同名称的值,例如。

<select id="select">
  <option name="group[35]" value="1">35</option>
  <option name="group[36]" value="1">36</option>
</select>

如果我选择了两个第一个选项,它应该将以下内容返回给php。

$_POST['group'] = [
  33 => 1,
  35 => 1,
];

有没有任何本地方法可以实现这一点,而不使用javascript根据选择框的值更改时创建新的隐藏字段,例如。

&#13;
&#13;
const select = document.querySelector('#select')

const selected = select => 
  select[select.selectedIndex].value

const onChange = e => {
  const input = document.createElement('input')
  input.type = 'hidden'
  input.name = `group[${selected(e.target)}]`
  input.value = 1
  e.target.form.appendChild(input)
  console.log(`<input type="hidden" name="${input.name}" value="1" />`)
}

select.addEventListener('change', onChange, false)
&#13;
<form>
  <select id="select" name="group">
    <option value="35">35</option>
    <option value="36">36</option>
  </select>
</form>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:2)

如果您不想使用javascript,那么您可以在提交表单后使用php执行此操作。不要将您的选择框命名为与组相同。

<form>
  <select id="select" name="select">
    <option value="35">35</option>
    <option value="36">36</option>
  </select>
</form>

然后在PHP中:

<?php     
$groups = $_POST['group'];
$groups[$_POST["select"]] = 1;

foreach($groups as $key => $val) {
    echo "$key => $val <br>";
}
?>