首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何发布空的<select ..multiple> HTML元素是否为空?

如何发布空的<select ..multiple> HTML元素是否为空?
EN

Stack Overflow用户
提问于 2009-07-15 15:55:27
回答 8查看 24.1K关注 0票数 22

我在HTML表单中有以下多选框,用户可以选择一个或多个选项。

代码语言:javascript
复制
<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格式的。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-07-15 16:05:08

如果表单是动态生成的,则可以包含一个具有相同名称的隐藏表单元素,该元素包含一个虚拟值。然后,忽略虚拟值,如果您为该变量获得的值为['dummy_value'],那么您可以在代码中将其视为“未选择任何内容”。

票数 23
EN

Stack Overflow用户

发布于 2018-01-13 22:50:17

如果在多选元素之前添加隐藏输入,则在没有选择多选项目的情况下,它将发送隐藏输入值。但是,一旦您选择了一个选项,就会使用所选的值。

通过这种方式,我能够在Laravel/php中区分两种不同的场景,即:

PHP将所有的myitems)

  • Update设置为空(需要隐藏的输入,这样就会接收到一个空的字符串,用于
  • 模型的其他属性,而不会接触到myitems (所以不包括表单中的任何myitems输入)。PHP将不会收到myitems密钥)

示例代码:

代码语言:javascript
复制
<input type="hidden" name="myitems" value="" />
<select name="myitems[]" multiple>
  <option value="1">Foo</option>
  <option value="2">Bar</option>
</select>
票数 15
EN

Stack Overflow用户

发布于 2009-07-15 15:57:48

有没有什么原因不能将未设置数组的情况视为发送时没有内容?

代码语言:javascript
复制
if (!isset($_POST['eng_0']))
    $_POST['eng_0'] = array();

编辑:

只要表单中存在多个选择,就添加一个隐藏字段:

代码语言:javascript
复制
<input type="hidden" name="eng_0_exists" value="1"/>

然后检查:

代码语言:javascript
复制
if (!isset($_POST['eng_0']) && isset($_POST['eng_0_exists']))
    $_POST['eng_0'] = array();
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1132303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档