2

ユーザーがこのウィジェットにタブ移動したときに、KendoUI の複数選択ドロップダウンが自動的に開くようにしようとしています。次のようにして、コンソールを介してオープンイベントをトリガーできます

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

ユーザーがタブで KendoUI の複数選択ウィジェットにフォーカスしたときに、これを自動的に実行したいと考えています。

私のセットアップ: Multiselect と IE9 に KendoUI MVC Wrapper を使用する

ウィジェットに渡した名前を使用してフォーカスリスナーをアタッチしようとしました

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

この方法ではフォーカス イベントを検出できませんでした。どんなヘルプ/ポインタも大歓迎です!

4

1 に答える 1

2

ユーザーがタブでフィールドに移動したときに、KendoUI の複数選択のオープン イベントをトリガーすることができました。:) ウィンドウ オブジェクトにキーアップ リスナーを追加し、興味のある要素を選択することができました。あまり効率的ではありませんが、機能します。改善を歓迎します。

$(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();
                    }
                }
            }
        }
    });
});
于 2014-07-01T22:31:34.490 に答える