【问题标题】:How to retrieve empty OPTION value if it's empty?如果它是空的,如何检索空的 OPTION 值?
【发布时间】:2011-08-01 17:09:49
【问题描述】:

考虑到我们有这个 HTML:

<select id="my_select">
  <option value="1">Foo</option>
  <option value="2">Bar</option>
  <option value="">Bork</option>
  <option value="3">Hey!</option>
</select>

获得所选value 的正确方法是:

var oS = document.getElementById("my_select");
alert(oS.options[oS.selectedIndex].value);

但如果选择第三个选项 Bork,alert() 将显示 "Bork" 而不是 ""(空字符串)。 如何检索空字符串?

TYIA

【问题讨论】:

  • 你不能给Bork一个值吗?

标签: javascript forms select validation option


【解决方案1】:

首先,它没有。对我来说,在 Chrome 和 IE8 中,您的示例会提示一个空字符串 (jsFiddle)。

但是,如果根本没有设置 value (jsFiddle),则会提醒 Bork。我想,这就是你要面对的问题。这是正确的行为。正如the MDC page 所说,

如果未定义,则其默认值为元素的文本内容。

但是,您可以使用 getAttribute 方法,如果没有选择任何元素,则该方法将提供 null (jsFiddle)。

var oS = document.getElementById("my_select");
alert(oS.options[oS.selectedIndex].getAttribute('value'));

【讨论】:

  • @mcgrailm:我认为你看错了。您的回答所描述的是 OP 目前正在发生的事情,而不是他们想要的。
  • @mcgrailm:不用担心。有时也会发生在我身上。 :)
【解决方案2】:

alert(document.getElementById("my_select").value)

返回空字符串或所选选项的任何定义值。

无需指定选项[selectedIndex]

如果没有默认选择的索引,则返回第一个选项值。

如果选择的选项没有值属性,

选项的文本在大多数浏览器的脚本警报中返回,

并在所有浏览器中发送到服务器(如果选择具有名称和表单操作)。

【讨论】:

    猜你喜欢
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    • 2020-11-09
    • 1970-01-01
    相关资源
    最近更新 更多