У меня возникли проблемы с выполнением автозаполнения в jqgrid. Я прошел исследование, псевдоним, пока я не задал этот вопрос на сайте, который в настоящее время не встречается. Проблема в том, что я должен использовать автозаполнение несколько раз в течение всего приложения, которое я разрабатываю. И теперь у меня есть эта функция:
Javascript:
function autocomplete_element(value, options) { var $ac = $('<input type="text"/>'); $ac.val(value); $ac.autocomplete({ source: function(request, response) { $.getJSON("autocomplete.php?id=estrategico", { q: request.term }, response); } }); return $ac; }
Jqgrid:
jQuery("#obj_oper_org").jqGrid({ (...) {name:'COD_OBJ_EST',index:'COD_OBJ_EST', hidden: true, editable:true, editrules:{required:true, edithidden:true}, edittype : 'custom', editoptions : {'custom_element' : autocomplete_element}},
То, что предназначалось для передачи параметра функции javascript больше, чтобы не повторять навсегда одну и ту же функцию для каждого поля, потому что мне нужно постоянно менять URL-адрес. Можно ли сделать что-то из жанра? Извините за вопрос, но у меня нет большого опыта работы с javascript, поэтому у меня есть некоторые трудности
Прежде всего вам не нужно использовать edittype : 'custom'
чтобы иметь возможность использовать автозаполнение jQuery UI. Вместо этого вы можете использовать только dataInit
.
Вы можете определить функцию myAutocomplete
например
function myAutocomplete(elem, url) { setTimeout(function () { $(elem).autocomplete({ source: url, minLength: 2, select: function (event, ui) { $(elem).val(ui.item.value); $(elem).trigger('change'); } }); }, 50); }
а затем использовать
{ name:'COD_OBJ_EST', hidden: true, editable: true, editoptions: { dataInit: function (elem) { myAutocomplete(elem, "autocomplete.php?id=estrategico"); } }}
Будьте осторожны, чтобы имя параметра, которое будет отправлено на сервер, является стандартным term
имени вместо имени q
которое вы используете в настоящее время. Я лично не вижу необходимости изменять имя параметра по умолчанию.