Добрый день.
Пишу модуль для jQuery и столкнулся с проблемой. Модуль занимается обслуживанием параллельного списка объектов доступа (пользователи и группы):
— русское название или имя
— идентификатор
— тип объекта.
На форме есть поле с автоподстановкой по мере ввода (для добавления без диалога) и поле для поиска с диалогом.
Для редактирования этого безобразия хочу показывать пользователю диалог, в котором он может добавить/удалить/отредактировать выбранные объекты.
Код, который все это делает
(function ($) {<br>
$.fn.namesSelector = function(){<br>
var fieldName = $(this).attr("id");<br>
<br>
// добавляем к выбиратору с лупой открывание диалога<br>
var selector = $("#" + fieldName + "_selector");<br>
$(selector).css("cursor", "pointer");<br>
$(selector).bind("click", function() {<br>
var items = new Array();<br>
var arr_ids = new Array();<br>
var arr_names = new Array();<br>
var arr_types = new Array();<br>
// получаем выбранных на момент нажатия людей<br>
$.each($('input[name="' + fieldName + '[name][]"]'), function(key, value){<br>
arr_names[arr_names.length] = $(value).val();<br>
});<br>
$.each($('input[name="' + fieldName + '[id][]"]'), function(key, value){<br>
arr_ids[arr_ids.length] = $(value).val();<br>
});<br>
$.each($('input[name="' + fieldName + '[type][]"]'), function(key, value){<br>
arr_types[arr_types.length] = $(value).val();<br>
});<br>
$.each(arr_names, function(key, value) {<br>
var obj = new Object();<br>
obj.id = arr_ids[key];<br>
obj.name = arr_names[key];<br>
obj.type = arr_types[key];<br>
items[items.length] = obj;<br>
});<br>
<br>
var dialog = $("<div>").load(web_root + "_modules/_acl_manager/?action=personSelectDialog", function(){<br>
$(this).dialog({<br>
width: 700,<br>
height: 300,<br>
title: "Выбор людей"<br>
});<br>
var selector = $(this).find("#dialog_names")[0];<br>
// добавляем в диалог уже выбранных людей<br>
$(selector).empty();<br>
});<br>
});<br>
}<br>
})(jQuery);<br>
Самый большой вопрос — никак не заполнить поле со списком в показанном диалоговом окне, так как в контексте диалога недоступна переменная items.
Можно это как-нибудь вообще сделать или у меня в корне неправильный подход?