javascript - 谷歌浏览器中奇怪的下拉行为

标签 javascript jquery google-chrome knockout.js

我有这个组合框 HTML:

<select class="selects" name="projectTown" id="projectTown" 
  data-bind="options:availableTowns, value: projectTown, click: loadComboValues">
</select> 

如您所见,单击保管箱时,我正在执行 loadComboValues 函数。

这里是:

loadComboValues = function(){
          if(isForUpdate() == "yes"){
              availableTowns([]);
              availableTowns.push("1");
              availableTowns.push("2");
              availableTowns.push("3");
              availableTowns.push("4");
              availableTowns.push("5");
              availableTowns.push("6");
           }
};

我正在做的是重新填充组合框值(我确实必须在单击组合框时执行此操作)。它似乎在工作,但在谷歌浏览器中有奇怪的行为。第一次点击我看不到所有的值,所以我必须再次点击才能加载完整的选项列表。这是一个例子:

第一次点击后:
enter image description here
当我再次点击它时(现在有完整列表)
enter image description here

我在这里错过了什么?我知道它应该是非常小而简单的东西,但我无法发现它。

最佳答案

如果您使用 focus 事件绑定(bind)而不是 click(在 Windows 上的 Chrome 中测试),它似乎可以按预期工作:

<select class="selects" name="projectTown" id="projectTown" 
  data-bind="event: { focus: loadComboValues }, options:availableTowns, value: projectTown">
</select>

JSFiddle:http://jsfiddle.net/7hVAv/5/

编辑(感谢 Robert Slaney 的评论):

这仅在您可以同步更新选项时有效(例如:从您的应用程序的另一部分已经加载到浏览器中)。从此处发起的 ajax 请求很可能会以与点击处理程序失败相同的方式失败,因为它会在选项更新之前将控制权交还给浏览器。

关于javascript - 谷歌浏览器中奇怪的下拉行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22936122/

相关文章:

android - Android 上的 Chrome 浏览器书签

javascript - 我应该使用哪个 Event.target 属性?

javascript - 根据行数而不是文本长度显示更多/更少

javascript - Chrome 上 iframe 中的分页符不起作用?

google-chrome - 溢出 : auto causes vertically centered items to be cut off using Flexbox

google-chrome - 是否可以使用否定文本过滤 Chrome 控制台日志?

javascript - 在一行上对齐 HTML 选择元素

javascript - Html: "div"inside "table"在使用 javascript 时呈现奇怪的效果

jquery - 使用jquery ajax将本地url连接到绝对url

jquery - 如果我们在我的网站中使用 **jquery 弹出窗口**,并且用户阻止浏览器中的弹出窗口。有效吗?