gpt4 book ai didi

javascript - 在没有 Internet Explorer 关闭框的情况下添加选项以选择框?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:07:57 25 4
gpt4 key购买 nike

我正在尝试构建一个网页,其中包含许多下拉选择框,这些选择框会在首次打开时异步加载它们的选项。这在 Firefox 下工作得很好,但在 Internet Explorer 下就不行了。

下面是我正在努力实现的一个小例子。基本上,有一个选择框(id 为“selectBox”),其中只包含一个选项(“Any”)。然后是一个 onmousedown 处理程序,它在单击该框时加载其他选项。

<html>
<head>
<script type="text/javascript">
function appendOption(select,option) {
try {
selectBox.add(option,null); // Standards compliant.
} catch (e) {
selectBox.add(option); // IE only version.
}
}

function loadOptions() {
// Simulate an AJAX request that will call the
// loadOptionsCallback function after 500ms.
setTimeout(loadOptionsCallback,500);
}

function loadOptionsCallback() {
var selectBox = document.getElementById('selectBox');
var option = document.createElement('option');
option.text = 'new option';
appendOption(selectBox,option);
}
</script>
</head>
<body>
<select id="selectBox" onmousedown="loadOptions();">
<option>Any</option>
</select>
</body>
</html>

所需的行为(Firefox 所做的)是:

  1. 用户看到的是一个包含“Any”的关闭选择框。
  2. 用户点击选择框。
  3. 选择框打开以显示唯一的选项(“任何”)。
  4. 500 毫秒后(或 AJAX 调用返回时),下拉列表会扩展以包含新选项(在此示例中硬编码为“新选项”)。

这正是 Firefox 所做的,这很棒。但是,在 Internet Explorer 中,只要在“4”中添加新选项,浏览器就会关闭选择框。选择框确实包含正确的选项,但该框已关闭,需要用户单击以重新打开它。

那么,对于如何在 IE 不关闭下拉框的情况下异步加载选择控件的选项,有没有人有任何建议?

我知道我可以在点击框之前加载列表,但我正在开发的真实表单包含许多这样的选择框,它们都是相互关联的,所以它将是如果我可以只在需要时加载每组选项,那么对于客户端和服务器来说会更好

此外,如果结果是同步加载的,在选择框的 onmousedown 处理程序完成之前,IE 将按预期显示完整列表 - 然而,同步加载是一个 这里的想法,因为它会在网络请求发生时完全“锁定”浏览器。

最后,我还尝试使用 IE 的 click() 方法在添加新选项后打开选择框,但不会重新打开选择框。

任何想法或建议将不胜感激!! :)

谢谢!

保罗。

最佳答案

您是否考虑过在表单上其他相关字段之一的 onblur 事件中调用 loadOptions 方法?这会在单击之前将列表加载到下拉框中,但行为应该仍然相似。

我认为您将探索略有不同的选项来获得您想要的内容,因为如果您使用 onmousedown 或 onclick 事件,您可能无法使用 Internet Explorer 关闭下拉列表。使用这些事件的另一个缺点是,如果用户使用键盘选择字段,您的方法可能永远不会被调用。

关于javascript - 在没有 Internet Explorer 关闭框的情况下添加选项以选择框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/113218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com