如何使用jquery.autocomplete从隐藏字段中删除值

时间:2010-02-23 17:19:41

标签: jquery jquery-plugins jquery-autocomplete

我有一个包含两个输入的页面:users_listusers_ids。 jquery.autocomplete用于自动完成users_listusers_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]);
    });
  });

2 个答案:

答案 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时,模糊事件会捕获,与自动完成功能无关。