автозаполнение: как избежать дублирования поиска?

Я использую плагин JQuery autocomplete в качестве своего рода средства выбора набора данных. Если пользователь выбирает значение из поиска автозаполнения, база данных запрашивается для соответствующего набора данных. Если пользователь вводит новое значение, он может ввести новый набор данных. Проблема возникает, когда пользователь вводит существующее значение, а не выбирает его из поиска автозаполнения. Когда это сделано, метод автозаполнения .result() не вызывается и набор данных не извлекается. Чтобы исправить это, я добавил .blur(function(){$(this).search();}); к элементу ввода. Это устранило исходную проблему.

Теперь у меня проблема, что .result() срабатывает при выборе из поиска И при размытии. Я хотел бы, чтобы .result() срабатывал при выборе из поиска ИЛИ при размытии. Как мне это сделать?

Вот мой код:

$('#groupset').autocomplete('ajax/php/leeruns.php');
$('#groupset').result(
    function(event, data, formatted) {
        if(data){
            $('#groupsetdesc').val(formatted);
            groups.load(data[1]); //retrieve matching dataset
        } else {
            $('#groupsetdesc').val('');
        }
    }
).blur(function(){$(this).search();});

person dnagirl    schedule 09.03.2010    source источник


Ответы (1)


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

var loaded_previous;
$('#groupset').autocomplete('ajax/php/leeruns.php');
$('#groupset').result(
function(event, data, formatted) {
    if(data && data[1] != loaded_previous){
        loaded_previous = data[1];
        $('#groupsetdesc').val(formatted);
        groups.load(data[1]); //retrieve matching dataset
    } else {
        $('#groupsetdesc').val('');
    }
}
).blur(function(){$(this).search();});
person Snives    schedule 13.05.2010