我在HTML表单中有以下多选框,用户可以选择一个或多个选项。
<select id="eng_0" name="eng_0[]" multiple size="3">
<option value="Privilégier">Privilégier</option>
<option value="Accepté">Accepté</option>
<option value="Temporaire">Temporaire</option>
</select>当用户未选择任何选项时,表单将被POSTed到PHP后端,但它不会为$_POST‘’eng_0‘创建空数组值,就好像该字段甚至不在表单上一样。
这有点像未选中的复选框,表示未提交问题。
有没有办法让它发布选择对象,即使没有选择的选项?如果有帮助的话,它可以是jQuery格式的。
发布于 2009-07-15 16:05:08
如果表单是动态生成的,则可以包含一个具有相同名称的隐藏表单元素,该元素包含一个虚拟值。然后,忽略虚拟值,如果您为该变量获得的值为['dummy_value'],那么您可以在代码中将其视为“未选择任何内容”。
发布于 2018-01-13 22:50:17
如果在多选元素之前添加隐藏输入,则在没有选择多选项目的情况下,它将发送隐藏输入值。但是,一旦您选择了一个选项,就会使用所选的值。
通过这种方式,我能够在Laravel/php中区分两种不同的场景,即:
PHP将所有的myitems)
myitems (所以不包括表单中的任何myitems输入)。PHP将不会收到myitems密钥)示例代码:
<input type="hidden" name="myitems" value="" />
<select name="myitems[]" multiple>
<option value="1">Foo</option>
<option value="2">Bar</option>
</select>发布于 2009-07-15 15:57:48
有没有什么原因不能将未设置数组的情况视为发送时没有内容?
if (!isset($_POST['eng_0']))
$_POST['eng_0'] = array();编辑:
只要表单中存在多个选择,就添加一个隐藏字段:
<input type="hidden" name="eng_0_exists" value="1"/>然后检查:
if (!isset($_POST['eng_0']) && isset($_POST['eng_0_exists']))
$_POST['eng_0'] = array();https://stackoverflow.com/questions/1132303
复制相似问题