我有一个包含两个输入的页面:users_list
和users_ids
。 jquery.autocomplete用于自动完成users_list
。 users_ids
是隐藏字段。选择用户并将其添加到users_list
后,他的ID就会添加到users_ids
。一切正常。但问题是,如果用户已从user_ids
移除,如何从users_list
中删除该值?
剧本:
$(document).ready(function(){
function formatItem(row) {
return row[0] + " (<strong>id: " + row[1] + "</strong>)";
}
function formatResult(row) {
return row[0].replace(/(<.+?>)/gi, '');
}
$("#users_list").autocomplete("<%= url_for(:controller => :users,
:action => :autocomplete_users_list) %>",
{
multiple: true,
matchContains: true,
mustMatch: true,
autoFill: true,
formatItem: formatItem,
formatResult: formatResult
});
$("#users_list").result(function(event, data, formatted) {
var hidden = $("#users_ids");
hidden.val( (hidden.val() ? hidden.val() + ";" : hidden.val()) + data[1]);
});
});
答案 0 :(得分:0)
似乎您的问题与jquery自动完成无关...您想要从序列化数组中删除项目。所以: 你隐藏的字段值是这样的:id; anotherid; onelastid 所以代码是:
function remove_id_from_hidden(id) {
var hidden = $("#users_ids");
var arr = hidden.val().split(";"); # transforms the string into an array
arr.splice(arr.indexOf(id), 1); # removes the item from the array
hidden.val(arr.join(";")); # sets the value again
}
答案 1 :(得分:0)
我有一个隐藏字段,我存储了所选值的ID。
为了在没有值时捕获,并且用户删除了我使用的值:
$('input.autocomplete').blur(function () {
if ($.trim($(this).val()) < 1) {
$(this).siblings('input[type="hidden"]').val(0);
}
});
$('input.autocomplete').autocomplete(/* autocomplete code */);
当用户从自动完成输入框移动焦点并将hiddenfield设置为0时,模糊事件会捕获,与自动完成功能无关。