0

入力とボタンのラッパーであるウィジェットがありました。入力フォーカスとボタンクリックの両方でドロップダウンを表示したい。ボタンをクリックすると正常に機能し、入力が正常に機能しないのは一度だけです。オプションを選択しても機能しません....入力をぼかすと、何かを選択するかボタンクリックを使用するまで正常に機能します....以下は私のコードです....plzの回避策. ................................................

  input = $("<input>")
                .appendTo(wrapper)
                .val(value)
                .attr("title", "")
                .autocomplete({
                    delay: 0,
                    minLength: 0,
                    appendTo: wrapper,
                    source: function (request, response) {
                        var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");

                        response(select.children("option").map(function () {
                            var text = $(this).text();
                            if (this.value && (!request.term || matcher.test(text)))
                                return {
                                    label: text,
                                    value: text,
                                    option: this
                                };
                        }));

                    },

                .focus(function () {                    
                    $(".ui-combobox").addClass("focus");                    

                    if (wasOpen) {
                        return;
                    }

                    input.autocomplete("search", "");
                })

                .blur(function () {                 
                    $(".ui-combobox").removeClass("focus");
                });

            // creating the anchor button
            $("<button></button>")
                .attr("tabIndex", -1)
                .addClass("br-r")
                .appendTo(wrapper)
                .mousedown(function () {
                    wasOpen = input.autocomplete("widget").is(":visible");
                })
                .click(function () {
                    input.focus();

                    if (wasOpen) {
                        return;
                    }

                    input.autocomplete("search", "");                   
                });
        },

上記は、必要な機能を扱う単なるスニペットです........

4

1 に答える 1

0

入力のためにこれを試してください

input = $("<input>")
                .appendTo(wrapper)
                .val(value)
                .attr("title", "")
                .autocomplete({
                    delay: 0,
                    minLength: 0,
                    appendTo: wrapper,
                    source: function (request, response) {
                        var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");

                        response(select.children("option").map(function () {
                            var text = $(this).text();
                            if (this.value && (!request.term || matcher.test(text)))
                                return {
                                    label: text,
                                    value: text,
                                    option: this
                                };
                        }));

                    }})

                .focus(function () {                    
                    $(".ui-combobox").addClass("focus");                    

                    if (wasOpen) {
                        return;
                    }

                    input.autocomplete("search", "");
                })

                .blur(function () {                 
                    $(".ui-combobox").removeClass("focus");
                });
于 2013-03-25T06:58:42.747 に答える