Select2 извлекает неверные результаты из последнего выбранного поля выбора

В настоящее время у меня возникла проблема, когда мой плагин select2 иногда показывает результаты из последнего выбранного поля выбора. Также я также получаю, что g.results имеет значение null, когда я впервые нажимаю на поле выбора или если я печатаю слишком быстро. Мой код выглядит следующим образом.

        window.currentField = ""; //current product field data
        window.currentCategory = "";   //current product category data

        //lets get some data from the hidden input for providing suggestions via ajax

        $(".suggestive-entry").live('click',function() {
            //alert("click called");
            //alert("test");

            window.currentField = $(this).siblings('input:hidden').attr('data-field'); //get the field attribute
           // alert(window.currentField);
            window.currentCategory = $(this).siblings('input:hidden').attr('data-category'); //get the category attribute
        });

        //formats select2 returned option
        function format(item) { return item.term; };

        //used for suggestive search fields
        $(".suggestive-entry").select2({
            createSearchChoice:function(term, data) { if ($(data).filter(function() { return this.term.localeCompare(term)===0; }).length===0) { return {id:term, term:term};} },
            initSelection : function (element, callback) {
                var data = {id: element.val(), term: element.val()};
                callback(data);
            },
            multiple: false,
            ajax: {
                url: "includes/ajax/map-fields.php",
                dataType: 'json',
                data: function (term, page) {
                    //alert("suggestive called");
                    return {
                        q: term,
                        field: window.currentField,
                        ptype: window.currentCategory
                    };
                },
                results: function (data, page) {
                    return { results: data };
                }
            },

            formatSelection: format,
            formatResult: format
        });

Любая помощь будет принята с благодарностью.


person Camrin Parnell    schedule 13.05.2013    source источник
comment
У кого-нибудь есть предложения? Может мой вопрос недостаточно ясен?   -  person Camrin Parnell    schedule 14.05.2013
comment
Не могли бы вы предоставить jsFiddle?   -  person A. Wolff    schedule 15.05.2013
comment
спасибо за ваш ответ, может быть, лучше спросить, как получить доступ к атрибутам данных скрытого ввода из select2. Я пытаюсь передать элементы данных в своем вызове ajax, как вы можете видеть в моем вызове данных (поле и ptype). Я думаю, что моя проблема в том, что мое событие click запускается в другое время, чем событие onchange select2, поэтому оно получает поле и ptype из последнего поля выбора. Глядя на мои запросы XHR, я думаю об этом.   -  person Camrin Parnell    schedule 17.05.2013
comment
можете ли вы просто объяснить, для чего используется скрытое поле и где оно было размещено   -  person rajesh kakawat    schedule 17.05.2013
comment
хорошо, плагин select2 отображает скрытые поля как измененные текстовые поля. Я прикрепил атрибуты данных к этому элементу и хотел бы передать информацию, содержащуюся в этих элементах, элементу select2, который используется в данный момент. Я попытался сделать это, используя метод, который я показал выше, однако иногда он дает данные из элемента select2, который был выбран ранее.   -  person Camrin Parnell    schedule 17.05.2013
comment
Пожалуйста, настройте скрипт на jsfiddle.net   -  person Chamika Sandamal    schedule 20.05.2013


Ответы (1)


попробуйте дать идентификатор скрытому полю, сделайте что-то вроде этого

   data: function (term, page) {
        //alert("suggestive called");
        var data_field = $('#someId').attr('data-field');
        var data_category = $('#someId').attr('data-category');
        return {
                q: term,
                field: data_field,
                ptype: data_category
            };
    } 
person rajesh kakawat    schedule 20.05.2013
comment
В моем случае мне пришлось использовать следующее: var data_field = $(this).attr('data-field'); var data_category = $(this).attr('категория данных'); Поскольку мой select2 обрабатывает все поля выбора. Спасибо за вашу помощь! Я пробовал что-то подобное раньше, но это должно было быть немного не так, поэтому я отказался от этой идеи. - person Camrin Parnell; 20.05.2013