Я потратил много времени, чтобы добавить дополнительные параметры в Jquery-Autocomplete-Source. Но я не могу закончить это.
Что я пытаюсь сделать: у меня есть форма автозаполнения с источником данных jQuery. Если вы выберете что-то из автозаполнения, оно будет вставлено в таблицу (текст и скрытое поле с идентификатором) и запущена функция lesen
(работает нормально). Функция lesen
считывает значение каждого элемента с «классом» nutzerid
(скрытое поле) в массив и помещает его в поле ввода - поле ввода является сборщиком для всех идентификаторов (работает!). НО! Автозаполнение должно прочитать значение этого поля и отправить его в качестве параметра в мой источник JSON. Но это не так. Консоль Firebug показывает пустой параметр. Даже если предупреждение может показать значение. Я действительно не знаю, что я делаю не так.
Я также пытался заменить поле ввода (сборщик всех идентификаторов) переменной. Но та же проблема возникает здесь. Я могу предупредить значение вар. Но попытка привязать его к источнику приводит к пустому параметру. Я также попытался задать значение для автозаполнения с помощью параметра extraparams. Нет успеха Я думаю, что есть проблема с присоединением к массиву. Может быть, шаг в lesen
, где все идентификаторы помещаются в массив, а массив заполняется в форме. Но у меня нет идей, как это решить.
Почему я это делаю? Я хочу, чтобы исходный PHP JSON исключал уже выбранные идентификаторы в запросе MySQL. То, что было выбрано по предыдущим запросам, больше не должно отображаться с автозаполнением. Поэтому я должен опубликовать то, что было добавлено на страницу запроса ранее. И это путь (вероятно, не самый чистый), который я выбрал. Представьте себе корзину для покупок. Если товар добавлен в корзину, он не должен отображаться в будущих запросах. Конечно, я открыт для новых подходов.
<input type="text" id="ausschluss" />
$(document).ready(
function() {
//this functions reads every hidden field (form the added items) an puts the array as string to a hidden field
function lesen(){
var itemsarray = [];
$(".nutzerid").each(function () {
var items = $(this).attr('value');
itemsarray.push(items);
});
$( "#ausschluss" ).val(itemsarray);
};
//this function attaches the selection (from the autocomplete) to a table it creates text, a hidden field with the user id and a button
function log( name, id ) {
$("<tr> <td>" + name + "<input class='Entf' type='button' value ='Entfernen' />" + "<input type='hidden' class='nutzerid' name='hiddenField' value='" + id + "' /></td></tr>").appendTo("#log");
$( "#log" ).attr( "scrollTop", 0 );
lesen();
}
//this is the autocompletepart
$( "#REMOTE" ).autocomplete({
source: "json.php?aus=" + $( "#ausschluss" ).val(), //this is not working. the firebug console shows an empty param (.php?aus=&term=blabla
minLength: 2,
select: function( event, ui ) {
log(ui.item.value,ui.item.id);
alert($( "#ausschluss" ).val()); //this works! after selecting an item from the autocomplete it shows me the value of the field "ausschluss", like it should be appended to the source
}
});
//this one captures the click of a button. identified by the class and kills the <tr> <td> and all elemtns in it
$('.Entf').live('click',function(event){
$(this).parent().parent().remove();
lesen();
});
});