1

我正在做 PHP 验证,我正在阅读w3.org的表单。任何人都可以澄清此声明“当未选择任何选项时,控件不成功,并且在提交表单时名称和任何值都不会提交给服务器”。为了测试这一点,我创建了

<form method="get" action="#">
    <select name="select_name" >
       <option value="">Select one</option>
      <option value="one">Choice one</option>
       <option value="two" >Choice two</option>
       <option value="three">Choice three</option>
    </select>
</form>

当我打印 GET 数组时,我看到名称“select_name”总是传递给服务器。对于单选和复选框,这是不正确的。但我不明白那句话想说什么。在选择选项期间是否可以传递“既不是名称也不是值”?

4

1 回答 1

2

您引用的规范:

如果未选择任何选项,则控件不成功,并且在提交表单时,名称和任何值都不会提交给服务器。

...表示没有选择任何选项时要做什么,但默认情况下,大多数浏览器会自动选择(下拉)选择元素的第一个选项。您没有在测试页面上看到页面加载时自动选择第一个选项“选择一个”吗?在您的情况下,如果您随后提交带有该选项的表单,则第一个选项的值是空字符串,您应该有一个名为“select_name”的请求参数和一个空字符串值。

在(非下拉)选择多个元素的情况下:

<select name="select_name" multiple>

...默认情况下未选择任何选项,因此如果您在未选择任何选项的情况下提交,您应该会看到您没有获得“select_name”请求参数。

注意:您用“PHP”标记了您的问题,但这不是 PHP 的事情。是浏览器根据当时表单控件的状态形成请求。

于 2013-10-05T03:15:41.757 回答