Как удалить значение из скрытого поля с помощью jquery.autocomplete - PullRequest
1 голос
/ 23 февраля 2010

У меня есть страница с двумя входами: users_list и users_ids. jquery.autocomplete используется для автозаполнения users_list. users_ids скрытое поле. Когда пользователь выбран и добавлен к users_list, его идентификатор добавляется к 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 голосов
/ 03 мая 2012

У меня есть скрытое поле, в котором я хранил идентификаторы выбранных значений.

Чтобы поймать, когда значение отсутствует, а пользователи удалили значение, которое я использую:

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

событие размытия ловится, когда пользователь перемещает фокус из поля ввода автозаполнения и устанавливает скрытое поле равным 0, независимо от того, что делает автозаполнение.

0 голосов
/ 26 апреля 2011

Кажется, ваш вопрос не имеет ничего общего с автозаполнением 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
}
...