我尝试以与某些复选框相同的方式提交选择字段输入值。
复选框使用一个索引数组,其中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根据选择框的值更改时创建新的隐藏字段,例如。
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;
答案 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>";
}
?>