17

这是我正在处理的示例:http: //jsfiddle.net/4suwY/5/

HTML:

<select id="asd">
    <option>hello</option>
    <option>I'M THE CHOSEN ONE</option>
    <option>asd</option>
    <option>wer</option>
    <option>qwe</option>
</select>

JS:

var sel = document.getElementById("asd");
var optnz = sel.getElementsByTagName("option")[1];
sel.value = optnz.value;
optnz.style.display = "none";

如您所见,它在 chrome 中有效,但在 safari 中无效。它应该做的是在单击下拉菜单时隐藏“I'M THE CHOSEN ONE”选项。

这是我做的另一个测试:http: //jsfiddle.net/4suwY/11/

相同的 HTML,这是 JS:

var sel = document.getElementById("asd");
var opt = document.createElement("option");
opt.innerHTML = "YAYA";
opt.value = "YAYA";
sel.appendChild(opt);
sel.value = "YAYA";
opt.style.display = "none";

无论如何,我需要做的是将一个选项显示为已选择(当前),并在打开下拉菜单时向用户隐藏,因此他无法选择它。

有什么建议/解决方法吗?我没有看到任何错误。Safari 有什么问题?我应该改变方法吗?Jquery 似乎没有帮助。


编辑:

我需要隐藏下拉菜单中的选项,但同时我需要将此选项“值”显示为选定值!例如,“关闭”下拉菜单将显示值“我是选择的人”,但如果我单击并打开菜单,唯一可见的选项将是“hello, asd, wer, qwe”..

4

1 回答 1

37

您不能<option>在 Safari(或 IE,就此而言)中的元素切换显示。这是 Safari 限制表单元素上的 CSS 样式功能的长期且不一致的传统的一部分,认为交互元素的视觉语言应该与操作系统一致(没有必要为 IE 的失败寻找理由)。

您唯一的选择是将其删除(并稍后重新附加),或将其设置为optnz.disabled = true. 关于这些坏消息我很遗憾!

于 2013-02-22T14:03:54.727 回答