2009-02-09 4 views

ответ

5

По умолчанию он хочет получить результаты, разделенные символами новой строки. Если вы укажете список значений, разделенных пробелами, вы хотите предоставить функцию синтаксического анализа, которая будет принимать возвращенные данные и превратить их в массив. То же самое верно, если вместо этого вы укажете список значений.

Вот пример из проекта, над которым я работаю, возвращает список строк через JSON из действия MVC.

$('#eventName').autocomplete('<%= Url.Action("SearchEvent", "Donor") %>', { 
    dataType: "json", 
    formatItem: function(data,i,max,value,term){ 
     return value; 
    }, 
    parse: function(data){ 
     var array = new Array(); 
     for(var i=0;i<data.length;i++) 
     { 
      array[array.length] = { data: data[i], value: data[i], result: data[i] }; 
     } 
     return array; 
    } 
}); 
+0

Да, переопределение «разбора» - это путь. jQuery действительно нуждается в лучшей документации для своего Autocomplete (по состоянию на этот комментарий он все еще «планируется выпустить w/jQuery 1.7»). Но если вы делаете документ с существующим кодом, они должны документировать все. Единственная проблема с использованием переопределения разбора - теперь все функции автозаполнения теперь будут переданы новому массиву(). Итак, вы должны учитывать это. tvanfosson показал, как вы учитываете форматирование отображения с переопределением formatItem. Но также обратите внимание, что вам может потребоваться переопределить метод result(). – eduncan911

1

Существует еще один плагин автозаполнения, который хочет иметь строку, разделенную символом '|' характер как это:

позиция 1 | пункт 2 |

Возможно, вы захотите проверить документы того, что используете!

Смежные вопросы