twitter-bootstrap - 使用 Bootstrap 选择插件在选择时触发事件 "change",仅在第二次单击后触发

标签 twitter-bootstrap events select drop-down-menu onchange

所以我一直在制作 Marketo 表单,然后添加个人样式和调整以改进 UI。其中一项调整是用 Bootstrap 选择(替换它们的小型 JS 插件)替换现有的选择下拉菜单。

两个 select 是联系在一起的,但是当原来的 select 发生变化时,它需要 change 事件触发一些条件逻辑来决定是否应该显示另一个 select。现在我正在做的是在 Bootstrap 选择上绑定(bind)一个点击事件,然后尝试在原始选择上触发更改事件,如下所示:

$jQ('li').click(function() {

console.log('LI Should trigger click on DD now.');
   event = document.createEvent("HTMLEvents");
   event.initEvent("change", true, false);
   input.dispatchEvent(event); 
});

这具有预期的效果,但只有在第二次单击下拉菜单后。所以这里发生的情况是,如果用户从 Bootstrap 选择中选择例如“美国”,它会更新原始选择,然后应该出现另一个包含“状态”的下拉菜单,这目前只会在我第二次点击 Bootstrap 选择时发生。所以说我选择“美国”然后其他任何东西,州字段只会出现。关于为什么会发生这种情况的任何想法?同样的事情也需要使状态字段消失。

最佳答案

所以我发现了这个问题,这是因为事件在原始下拉列表有机会更新其值之前触发,解决方案是将 dispatchEvent 调用包装在 setTimeout 中。

所以就在这里(以防有人碰巧遇到同样的问题!)

 setTimeout(function() {
 document.getElementById('Country').dispatchEvent(new Event('change', { 'bubbles': true }));
 },200);

如您所见,我也将代码压缩为一行。

关于twitter-bootstrap - 使用 Bootstrap 选择插件在选择时触发事件 "change",仅在第二次单击后触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26218355/

相关文章:

javascript - 为什么加载 bootstrap.js 两次会导致错误?

sql-server - 在一个查询中查找多个最大日期

mysql select语句不起作用

javascript - YouTube 作为桌面版本的弹出式播放,但不在移动设备上

javascript - Bootstrap 在崩溃时崩溃 "Hide"不工作

c# - DebuggerEvents.OnEnterRunMode 事件在 Visual Studio 2012 中不起作用

events - 如何以编程方式生成鼠标事件?

php - 使用 for 循环和 php 将样式应用于选择框

javascript - Bootstrap容器中的背景色在Electron中不起作用

wpf - 按键事件 : how to capture down and up key rows?