【问题标题】:Can the select option value be of different types?选择选项值可以是不同的类型吗?
【发布时间】:2011-02-04 17:38:19
【问题描述】:

我想知道选择选项值的最佳做法。

例子

<select name="select">
  <option value="0-9">Sample</option>
  <option value="a-z">Sample</option>
  <option value="this is sample value">Sample</option>
  <option value="this-is-sample-value">Sample</option>
  <option value="this_is_sample_value">Sample</option>
  <option value="this & is | sample ** value">Sample</option>
</select>

我在这里有点困惑。选择值是否与input texttextarea 相同

【问题讨论】:

    标签: html


    【解决方案1】:

    对于可以在选项元素的 value 属性中设置的数据类型没有实际限制。当然,在 HTML 中具有特殊含义的字符确实需要由适当的实体表示(例如,&amp;amp;&amp;amp;(尽管问题中的字符符合规则的“后跟空格字符”例外) )。

    该属性被定义为包含 CDATA:

    <!ELEMENT OPTION - O (#PCDATA)         -- selectable choice -->
    <!ATTLIST OPTION
      %attrs;                              -- %coreattrs, %i18n, %events --
      selected    (selected)     #IMPLIED
      disabled    (disabled)     #IMPLIED  -- unavailable in this context --
      label       %Text;         #IMPLIED  -- for use in hierarchical menus --
      value       CDATA          #IMPLIED  -- defaults to element content --
      >
    

    ——http://www.w3.org/TR/html4/interact/forms.html#h-17.6

    CDATA 是一个字符序列 文档字符集,并且可能 包括字符实体。用户 代理应该解释属性 值如下:

    • 用字符替换字符实体,
    • 忽略换行,
    • 用一个空格替换每个回车符或制表符。

    用户代理可能会忽略前导和 CDATA 中的尾随空格 属性值(例如,“myval” 可以解释为“myval”)。 作者不应声明属性 带有前导或尾随白色的值 空间。

    对于一些带有 CDATA 的 HTML 4 属性 属性值,规范 对集合施加进一步的约束 属性的合法值 DTD 可能无法表达。

    ——http://www.w3.org/TR/html4/types.html#type-cdata

    规范没有对选项元素的 value 属性施加额外的限制。

    【讨论】:

    【解决方案2】:

    与文本类型的输入相同——可以是字符串、浮点数等。这更多的是一个问题,当您处理表单数据时,哪个最可靠。

    【讨论】:

    • 不,可以是 CDATA。您可能会在服务器上将其解析为字符串、浮点数等,但它在 HTML 文档中并不处于该状态。
    • 对,HTML中的CDATA,但是可以用多种方式解析。语义问题,我想。感谢您的澄清。
    【解决方案3】:

    发布的将是与选择相对应的值。

    在这方面,它的处理方式与输入类型文本相同。

    【讨论】:

      【解决方案4】:

      是的,它是一个字符串类型,可以有任何值。当您提交表单时,该值就会消失,并且存在限制。

      限制取决于您在服务器端使用的技术。

      在 ASP.Net 的情况下,当您尝试发布 & 或特别是 some script script > 或类似的字符时html 标签的一部分,或者可能是一个危险的脚本。 asp.net 检查发布的数据并抛出异常。表示对于 asp.net,选择框的值中不允许某些特殊字符

      但是您给出的示例(除了具有 & 应该以 amp; 为前缀)是允许的,并且可以在选项标签值属性中设置。

      希望您的理解得到建立。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-06
        • 1970-01-01
        相关资源
        最近更新 更多