Domanda

Io uso plugin jQuery completamento automatico come una sorta di set di dati di selezione. Se l'utente sceglie un valore dalla ricerca completamento automatico, il database viene interrogato per il set di dati corrispondente. Se l'utente digita un nuovo valore, l'utente può inserire un nuovo set di dati. Un problema sorge quando l'utente digita in un valore esistente piuttosto che scegliere dalla ricerca completamento automatico. Quando questo è fatto, il metodo di completamento automatico .result() non viene chiamato e nessun set di dati viene recuperato. Per risolvere questo ho aggiunto un .blur(function(){$(this).search();}); per l'elemento di input. Questo risolto il problema originale.

Ora ho il problema che .result() incendi sulla selezione dalla ricerca E nel caso di sfocatura. Vorrei .result() di sparare sulla selezione dalla ricerca OR su sfocatura. Come posso fare che questo accada?

Qui è il mio codice:

$('#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();});
È stato utile?

Soluzione

È possibile memorizzare il valore corrente di dati in una variabile persistente chiamata precedente e non caricare il set di dati se è lo stesso.

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();});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top