jQuery Autocomplete Как использовать один и тот же локальный массив для двух разных текстовых полей ввода идентификатора? - PullRequest
1 голос
/ 11 октября 2010

В настоящее время я использую это для одного поля автозаполнения (id = "drug"), и оно прекрасно работает. Мне нужно иметь второй блок автозаполнения (id = "drug2"), который использует тот же массив, что и его выбор. Я не могу заставить его работать вообще. Каждый раз, когда я пытаюсь изменить код, я ломаю его на обоих. Я уверен, что у кого-то есть элегантное решение, которое приведет меня в правильном направлении. , .

<script type="text/javascript">
function findValue(li) {
 if( li == null ) return alert("No match!");

 // if coming from an AJAX call, let's use the DrugId as the value
 if( !!li.extra ) var sValue = li.extra[0];

 // otherwise, let's just display the value in the text box
 else var sValue = li.selectValue;

 //alert("The value you selected was: " + sValue);
}

function selectItem(li) {
 findValue(li);
}

function formatItem(row) {
 return row[0] + " (id: " + row[1] + ")";
}

function lookupLocal(){
 var oSuggest = $("#drug")[0].autocompleter;
 oSuggest.findValue();
 return false;
}

$(document).ready(function() {
 $("#drug").autocompleteArray(

  ['Acyclovir','Amikacin','Aminophylline','Amiodarone','Ampicillin','Atropine','Azithromycin','Aztreonam','Bupivacaine','Calcium Chloride','Calcium'],
  {
   delay:10,
   minChars:1,
   matchSubset:1,
   onItemSelect:selectItem,
   onFindValue:findValue,
   autoFill:true,
   maxItemsToShow:100
  }

 );
});
</script>

1 Ответ

2 голосов
/ 11 октября 2010

Вы можете использовать множественный селектор в своем вызове jQuery, а затем вызывать свой autocompleteArray для этого:

$(document).ready(function() {
 $("#drug1, #drug2").autocompleteArray(
  ['Acyclovir','Amikacin','Aminophylline','Amiodarone','Ampicillin','Atropine','Azithromycin','Aztreonam','Bupivacaine','Calcium Chloride','Calcium'],
  {
   delay:10,
   minChars:1,
   matchSubset:1,
   onItemSelect:selectItem,
   onFindValue:findValue,
   autoFill:true,
   maxItemsToShow:100
  }    
 );
});
...