2010-04-07 4 views
0

У меня есть следующая ситуация с плагином автозаполнения на странице .aspx. Он работает нормально. Результат поиска автозаполнения дает идентификатор продукта, а описание продукта объединяется с ним (т. Е. 2099 - продукт). Я знаю, что мне нужно использовать split() с этим, но где я могу его поместить? Я все еще довольно новичок в jQuery и javascript.jQuery autocomplete: как разбить результат строки?

$(document).ready(function() { 
    $('.divAutoComplete').autocomplete("LookupCodes.aspx?type=FC", { 
    mustMatch: true 
    }); 
}); 

ответ

1

Если это один и тот же autocomplete I've used (Томас Кирда), вы должны быть в состоянии добавить onSelected событие так:

$(document).ready(function() { 
    $('.divAutoComplete').autocomplete("LookupCodes.aspx?type=FC", { 
    mustMatch: true, 
    onSelect: function(value, data) { autoCompleteSelected(value, data); } 
    }); 
}); 

function autoCompleteSelected(value, data) { 
    var parts = data.split("--"); 
... do something with parts 

} 

Очевидно, что если это не то, что будет иметь различные события

+0

Попробую его. Мое от «bassitance de», но похоже, что я помню, что есть onSelect. Отметьте как ответ, когда я уверен, что он работает. Благодаря! – Matt

+0

Вот мой плагин: http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/ – Matt

0

В JavaScript любая строка может быть разделена с помощью функции разделения, как так:

"Pandas enjoy tasty bamboo".split(' ') 

Вышеприведенные разбивает строка на пространствах возвращающихся следующий массив:

["Pandas", "enjoy", "tasty", "bamboo"] 

Любой строка может быть поданы в функцию разделения, а он будет справляться с несколькими строками символов просто отлично.

Теперь, что касается вашего вопроса с плагином автозаполнения jQuery, вам нужно, чтобы ваша страница .aspx возвращала массив параметров JS, чтобы он мог работать. Кроме того, вы можете загрузить данные другим способом, а затем передать массив в автозаполнение. Если сервер возвращает массив как следующий, то вы можете передать его непосредственно:

["1234 -- Chicken", "4321 -- Noodle", "1432 -- Irrational Monkeys"] 

Дело в том, что автозаполнение использует массив для сравнения.

docs for the autocomplete plugin кажется достаточно приличным.

+0

спасибо. Я знаю, как разбить строку. Я просто не знаю, как это сделать в контексте плагина автозаполнения. – Matt

0

сделать этот код для разделения

<script type="text/javascript"> 
    $(function() { 
     var availableTags = ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby", "python", "c", "scala", "groovy", "haskell", "perl"]; 
     function split(val) { 
      return val.split(/,\s*/); 
     } 
     function extractLast(term) { 
      return split(term).pop(); 
     } 

     $("#tags").autocomplete({ 
      minLength: 0, 
      source: function(request, response) { 
       // delegate back to autocomplete, but extract the last term 
       response($.ui.autocomplete.filter(availableTags, extractLast(request.term))); 
      }, 
      focus: function() { 
       // prevent value inserted on focus 
       return false; 
      }, 
      select: function(event, ui) { 
       var terms = split(this.value); 
       // 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; 
      } 
     }); 
    }); 
    </script> 
Смежные вопросы