加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

twitter-bootstrap – 使用bootstrap select插件在select上触发

发布时间:2020-12-17 21:24:28 所属栏目:安全 来源:网络整理
导读:所以我一直在制作Marketo表单,然后添加个人样式和调整来改进UI.其中一个调整是使用bootstrap select替换现有的select下拉列表(替换它们的小JS插件). 两个选择是链接的,但是当原始选择发生更改时,它需要更改事件来触发一些条件逻辑,以确定是否应显示另一个选
所以我一直在制作Marketo表单,然后添加个人样式和调整来改进UI.其中一个调整是使用bootstrap select替换现有的select下拉列表(替换它们的小JS插件).

两个选择是链接的,但是当原始选择发生更改时,它需要更改事件来触发一些条件逻辑,以确定是否应显示另一个选择.现在我正在做的是在bootstrap选择上绑定一个click事件,然后尝试在原始select上触发change事件,如下所示:

$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); 
});

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

解决方法

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

所以这就是(如果有人碰巧遇到同样的问题!)

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

正如您所看到的,我只是将代码缩减为单行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读