#jquery-ui #autocomplete #repeat
#jquery-пользовательский интерфейс #автозаполнение #повторить
Вопрос:
У меня есть два поля автозаполнения пользовательского интерфейса jquery в большой форме (вероятно, с 40 или более полями). Пользователь может выполнять поиск двумя способами, используя два разных поля автозаполнения (либо по имени, либо по номеру учетной записи). Я заполняю другие поля в форме, когда пользователь выбирает свой результат поиска. Однако мне было интересно, есть ли более чистый способ сделать это.
На данный момент это то, что у меня есть.
$( "#search-by-custname" ).autocomplete({
source: "cust_search_by_name.php",
minLength: 4,
select: function(event, ui){
$('#Custid').val(ui.item.Custid);
$('#Alpha1').val(ui.item.Alpha1);
$('#CustName').val(ui.item.CustName);
}
});
$( "#search-by-custalpha1" ).autocomplete({
source: "cust_search_by_alpha1.php",
minLength: 4,
select: function(event, ui){
$('#Custid').val(ui.item.Custid);
$('#Alpha1').val(ui.item.Alpha1);
$('#CustName').val(ui.item.CustName);
}
});
Файлы php собирают данные из удаленного источника данных, и все работает нормально.
Проблема в том, что если я дважды буду ссылаться на все эти поля внутри каждого поля автозаполнения, это будет много строк кода… Мне было интересно, есть ли более чистый способ сделать это.
Я поиграл с написанием своей собственной функции, но я новичок в javascript и jquery.
Ответ №1:
Я не уверен на 100%, что это сработает, но я не понимаю, почему это не сработало бы.
var selectFunc = function(event, ui){
$('#Custid').val(ui.item.Custid);
$('#Alpha1').val(ui.item.Alpha1);
$('#CustName').val(ui.item.CustName);
};
$( "#search-by-custname" ).autocomplete({
source: "cust_search_by_name.php",
minLength: 4,
select: selectFunc
});
$( "#search-by-custalpha1" ).autocomplete({
source: "cust_search_by_alpha1.php",
minLength: 4,
select: selectFunc
});