【问题标题】:Trigger open event of KendoUI multiselect widget触发 KendoUI 多选小部件的打开事件
【发布时间】:2014-07-01 18:57:24
【问题描述】:

我试图让 KendoUI 多选下拉菜单在用户选择此小部件时自动打开。我可以通过控制台触发打开事件

var widget = $("#MyWidget").data("kendoMultiSelect");
widget.focus();
widget.open();

当焦点位于 KendoUI 多选小部件上时,我想自动执行此操作,因为用户点击它。

我的设置:使用多选和 IE9 的 KendoUI MVC 包装器

我尝试使用传递给小部件的名称附加焦点侦听器,即

$("#MyWidget").on('focus',function(e){
    alert("hi");
});

我无法以这种方式检测焦点事件。任何帮助/指针将不胜感激!

【问题讨论】:

    标签: kendo-asp.net-mvc kendo-ui-mvc


    【解决方案1】:

    当用户进入该字段时,我能够触发 KendoUI 多选的打开事件! :) 我向窗口对象添加了一个 keyup 侦听器,并且能够挑选出我感兴趣的元素。它不是很有效,但它有效,我欢迎对其进行改进。

    $(document).ready(function () {
        $(window).on('keyup', function (e) {
            var code = (e.keyCode ? e.keyCode : e.which);
            if (code == 9) {
                //get element in focus
                var item_name = e.target.name;
                //get element in focus
                var focused_element = $(document.activeElement);
                //console.log(focused_element);
                var nextSib = focused_element[0].nextElementSibling;
                if (nextSib && nextSib.parentElement && nextSib.parentElement.nextElementSibling) {
                    var select_element = nextSib.parentElement.nextElementSibling;
                    //item_name will hold the name of the widget i.e. the value of the input field
                    //.Name("myWidgetName")
                    item_name = select_element.id;
                    var obj_select = '#' + item_name;
                    //true for multiselect widget
                    if (select_element.type == 'select-multiple') {
                        var obj_selector = $(obj_select).data("kendoMultiSelect");
                        if (obj_selector) {
                            obj_selector.focus();
                            obj_selector.open();
                        }                    
                    }else if (select_element.type == 'text'){
                        //true for combobox widget
                        var obj_selector = $(obj_select).data("kendoComboBox");
                        if (obj_selector){
                            obj_selector.open();
                        }
                    }
                }
            }
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-17
      • 2019-12-30
      相关资源
      最近更新 更多