JQuery Автозаполнение «без результата» не кликабельны или не выбираются - PullRequest
2 голосов
/ 21 января 2010

Как правильно обработать регистр «без результата» в jQuery Autocomplete функция, что «без результата» не кликабельны и не выбираемы?

В части "parse" я добавляю элемент "no result":

 parse: function(data) {
     var array = new Array();
     if (!data || data.length == 0) {
         array [0] = { data: { Title: "No results" }, value: "No results", result: "No results"};
     }
 }

Таким образом, когда нет результатов, отображается только «Нет результатов». Но его можно выбрать и щелкнуть, что не в порядке, потому что это значение затем передается на ввод текста.

EDIT
Полная часть JavaScript:

<script type="text/javascript">
                var NoResult= "No result";
                $(function() {
                    $("#txtTextAnimal").autocomplete('<%= Url.Action("Find", "Animal") %>', {
                        dataType: 'json',
                        delay: 100,
                        parse: function(data) {
                            var rows = new Array();
                            for (var i = 0; i < data.length; i++) {
                                rows[i] = { data: data[i], value: data[i].Title, result: data[i].Title };
                            }
                            if (rows.length == 0) {
                                rows[0] = { data: { Title: NoResult}, value: "", result: NoResult};
                            }
                            return rows;
                        },
                        formatItem: function(item) {
                            return item.Title;
                        }
                    }).result(function(event, item) {
                        if (item.Title != NoResult) {
                            $("#hidAnimalId").val(item.Id);
                            $("#hidAnimalId").closest("form").submit();
                        }

                    });
                });

            </script>

1 Ответ

3 голосов
/ 21 января 2010

Я не уверен, какой плагин автозаполнения вы используете, но где-то должен быть обработчик "щелчка"? В этой функции вы можете просто проверить «Нет результатов».

В качестве альтернативы, вы могли бы просто установить значение массива на ноль, когда нет данных? Итак ...

var array = new Array();
if (!data || data.length == 0) {
  array [0] = { data: { Title: "No results" }, value: "", result: "No results"};
}

Обновлено здесь: Вы можете использовать параметр результата ... Это не проверено, поэтому, возможно, потребуется некоторая обработка

jQuery('#yourTextbox').result(function(event, data, formatted) {
  if (!data || formatted == 'No Result'){
    return false;
  } else {
    // return true or some other logic?
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...