1

我有一个包含两个输入的页面:users_listusers_ids. jquery.autocomplete 用于自动完成users_list. users_ids是隐藏字段。当用户被选中并添加到id 时,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]);
    });
  });
4

2 回答 2

0

我有一个隐藏字段,我在其中存储了所选值的 id。

为了在没有价值时捕捉到,并且用户删除了我使用的值:

$('input.autocomplete').blur(function () {
    if ($.trim($(this).val()) < 1) {
        $(this).siblings('input[type="hidden"]').val(0);
    }
});
$('input.autocomplete').autocomplete(/* autocomplete code */);

当用户将焦点从自动完成输入框移动并将隐藏字段设置为 0 时,模糊事件会捕获,这与自动完成功能无关。

于 2012-05-03T14:13:22.997 回答
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
}
于 2011-04-26T15:16:42.610 回答