Многократное автозаполнение jQuery с помощью c#

#c# #jquery #autocomplete

#c# #jquery #автозаполнение

Вопрос:

Я реализую многократное автозаполнение с помощью пользовательского интерфейса jQuery. Также я использую веб-сервис для передачи значений. Я проверяю демонстрацию jQuery UI на наличие множественного автозаполнения и использую точно такой же код, и он работает до первого автозаполнения и добавляет «,» в конце.

Но здесь я застрял, он не ищет следующее автозаполнение. Ну, я не добавил часть кода из демо, и я не знаю, куда он должен идти. Если бы кто-нибудь мог мне помочь, пожалуйста.

Слушайте мой код

 <script type="text/javascript">
    $(function () {

        function split(val) {
            return val.split(/,s*/);
        }
        function extractLast(term) {
            return split(term).pop();
        }

        $(".tb")

        // don't navigate away from the field on tab when selecting an item
        .bind("keydown", function (event) {
            if (event.keyCode === $.ui.keyCode.TAB amp;amp;
                    $(this).data("autocomplete").menu.active) {
                event.preventDefault();
            }
        })

        .autocomplete({

            source: function (request, response) {
                $.ajax({
                    url: "EmployeeList.asmx/FetchEmailList",
                    data: "{ 'mail': '"   request.term   "' }",
                    dataType: "json",
                    type: "POST",
                    contentType: "application/json; charset=utf-8",
                    dataFilter: function (data) { return data; },
                    success: function (data) {
                        //term: extractLast(request.term),
                        response($.map(data.d, function (item) {
                            return {
                                value: item.Email
                            }
                        }))
                    },

                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        alert(textStatus);
                    }
                });
            },

            search: function () {
                // custom minLength
                var term = extractLast(this.value);
                alert(term);
                if (term.length < 2) {
                    return false;
                }
            },
            focus: function () {
                // prevent value inserted on focus
                return false;
            },
            select: function (event, ui) {
                var terms = split(this.value);
                alert(terms);
                // remove the current input
                terms.pop();
                // add the selected item
                terms.push(ui.item.value);
                // add placeholder to get the comma-and-space at the end
                terms.push("");
                this.value = terms.join(", ");
                return false;
            } //,

            //minLength: 2
        });
    });
</script>
  

Вот код, которого мне не хватает в демо-версии jQuery UI

 .autocomplete({
            source: function( request, response ) {
                $.getJSON( "search.php", {
                    term: extractLast( request.term )
                }, response );
            },
  

Я не знаю, куда добавить этот код:
термин: extractLast(request.term )
вот ссылка на весь код Ссылка на демонстрационный код

Ответ №1:

заменить

 data: "{ 'mail': '"   request.term   "' }"
  

с помощью

  data: "{ 'mail': '"   extractLast(request.term)   "' }"
  

это должно сработать, но мне не очень понравилось, как вы кодируете JSON, может создать проблемы с кавычками и т.д.

Комментарии:

1. Спасибо, это сработало! Кстати, есть ли какие-либо предложения о том, что вам нужно кодировать JSON?

2. ммм, что-то вроде JSON.stringify({mail: extractLast(request.term)}), но обязательно включите JSON2.js из github.com/douglascrockford/JSON-js/blob/master/json2.js поскольку старые браузеры могут не поддерживать кодировку JSON.