Я думаю, что самый простой способ сделать это - сохранить всю информацию о получателе в объекте или массиве javascript, а затем в вашей функции отправки, просто запустить функцию, которая проверяет, существует ли этот объект, и если он существует запишите серию скрытых входных данных с идентификационной информацией получателей, прежде чем сериализовать форму и начать свой post
вызов.
Создать переменную объекта в доступном месте (я использую глобальную область видимости для удобства, но объект утилиты был бы лучше)
recipients_dict = {}; // We could also use an array if we have a find function handy.
В вашей функции :select
измените ваше событие onclick
и добавьте:
select: function(event, ui) {
$("#message_to").append("<input type=\"button\" class=\"recipient\" name=\"recipients[]\" value=\"" + ui.item.label + "\" onclick=\"remove_recipients(this)\" />");
recipients_dict[ui.item.label] = ui.item.label;
}
Затем создайте две функции: одну для удаления людей из массива и одну для создания элементов формы перед отправкой.
function remove_recipients(btn) {
btn = $(btn);
name = btn.value;
if (typeof recipients_dict[name] !== 'undefined') {
delete recipients_dict[name];
}
btn.remove();
}
function add_recipients(frm) {
if (typeof recipients_dict === 'object') {
_recipient_inputs = "";
for (var name in recipients_dict) {
_recipients_inputs += '<input type="hidden" name="recipients[]" value="' + name + '" />';
}
$(frm).append(_recipients_inputs);
}
}
Затем внутри вашей функции submit
просто передайте:
$("form.reload").submit(function(){
add_recipients(this);
alert($(this).serialize()); /* Debugging */
// ... snip ...
}
Преимущество этого заключается в том, что вам не нужно беспокоиться об удалении нужных получателей из формы. Как только вы создаете форму, вы знаете, что отправляете только правильных получателей.