我在一个固定高度的容器中有一个 Kendo UI MultiSelect(想想模式弹出窗口)。MultiSelect 已将 autoClose 设置为 false。
随着用户选择多个项目(并且原始输入字段增长),MultiSelect 列表似乎随机关闭。
重现步骤:
- 加载http://dojo.telerik.com/aKeGu/4
- 开始选择 MultiSelect 中的每个项目,直到 MultiSelect 关闭
任何见解都值得赞赏。
谢谢。
我在一个固定高度的容器中有一个 Kendo UI MultiSelect(想想模式弹出窗口)。MultiSelect 已将 autoClose 设置为 false。
随着用户选择多个项目(并且原始输入字段增长),MultiSelect 列表似乎随机关闭。
重现步骤:
任何见解都值得赞赏。
谢谢。
我确定了一个解决方案。似乎下拉菜单在滚动事件之前被关闭。所以,我拦截了滚动事件,取消它,然后重新打开下拉菜单。
工作示例: http ://dojo.telerik.com/aWAQu/6
解决方案:
$('.caregiver-window-fixed-height').on('scroll', function (e) {
var $widget = $('#careGiverHelpTags').data("kendoMultiSelect");
if (e.type == "scroll" && $widget.wrapper.hasClass('k-state-focused') && $widget.list.is(':visible')) {
e.preventDefault();
e.stopImmediatePropagation();
$widget.open();
}
});
实际上它不是随机关闭的,而是在“弹出”容器在垂直空间用完时开始滚动时立即关闭。滚动事件导致下拉菜单关闭。overflow-y: none;
如果您在弹出窗口中设置,您将看到问题消失。
我认为为 IE 解决此问题的唯一方法是通过一种解决方法来防止容器滚动。显然,这会对您产生一些 UI 影响,因此您需要决定是通过 CSS 还是使用将消耗滚动事件并取消它的 javascript。
您可以在此处的下拉列表中看到类似滚动问题的一些解决方案:http: //docs.telerik.com/kendo-ui/controls/editors/dropdownlist/how-to/appearance/prevent-close-on-scroll
在这里:http ://dojo.telerik.com/OJugu
并查看该线程:http://www.telerik.com/forums/scrolling-bug-causes-multiselect-dropdown-to-close-(with-dojo-example)