2014-04-24 39 views
1

我在我的页面上有2个selectpickers。 我希望能够打开(滑下)第二个selectpicker时,用户已经在第一个选择的东西。 这样做是为了帮助用户不要点击太多。当前一个关闭时打开另一个引导选择(selectpicker)

示例HTML:

<div class="row"> 
    <select class="select-picker" id="picker1" data-size="10"> 
     <option>Opt 1</option> 
     <option>Opt 2</option> 
     <option>Opt 3</option> 
     <option>Opt 4</option> 
    </select> 

    <select class="select-picker" id="picker2" data-size="10"> 
     <option>Opt 2.1</option> 
     <option>Opt 2.2</option> 
     <option>Opt 2.3</option> 
     <option>Opt 2.4</option> 
    </select> 
</div> 

JS的例子:

$(document).ready(function() { 
    $('.select-picker').selectpicker(); 

    $('.select-picker').change(function(){ 
     // Trying to open 2nd selectpicker 
     $selectpickerButton = $('button[data-id="picker2"]'); 
     $selectpicker = $selectpickerButton.parent(); 

     //$selectpicker.addClass('open'); 
     $selectpickerButton.click(); 
    }); 
}); 

而这里的JSBin:http://jsbin.com/UFoRIYex/514/edit

和小提琴:http://jsfiddle.net/u6vWL/46/

+0

这已经被问过,不幸的是不可能。 – Andrew

+0

可能重复[可以使用jQuery打开下拉列表](http://stackoverflow.com/questions/360431/can-i-open-a-dropdownlist-using-jquery) – Andrew

+0

不幸的是,这不是重复的你指定的主题。我遇到了Bootstrap selectpicker库的具体实现问题。只要我一步一步调试过程 - 我可以看到第二个选择器已经成功扩展,但在此之后,一些“刷新”或其他事情正在完成,并且两者都被关闭。 – WhiteAngel

回答

2

下面的工作,这是一个有点肮脏,但嘿!

修订ANSWER

我像以前一样使用相同的答案,但现在我设定超时,调用函数超时完成后:

$('.select-picker').selectpicker(); 
var selectpickerButton = $('button[data-id="picker2"]'); 


$(document).on("change", "#picker1", function() { 
    setTimeout(function() { 
     // Do something after xx milli seconds 
     youSelected(); 
    }, 100); 
}); 

function youSelected() { 
    $(selectpickerButton).trigger('click'); 

} 

jSFiddle

+0

我刚刚试过你的解决方案,它似乎打开第二dropdrown,但问题是,不管选择什么选项,下拉的值都不会改变。 更新JSBin在这里:http://jsbin.com/UFoRIYex/797/edit – WhiteAngel

+0

我更新了我的答案,以满足您的要求。 – HenryW

+1

你也可以去掉on.change中的函数并直接告诉'$(selectpickerButton).trigger('click');'可以在这里看到:[jsFiddle](http://jsfiddle.net/u6vWL/88/ ) – HenryW

相关问题