Domanda

Sto usando jQuery Autocomplete e MVC per popolare un elenco a discesa con un sacco di nomi di colonne.

Ogni volta che un utente cambia il valore di un DropDownBox sul mio modulo, faccio una richiesta al mio controller per restituire un nuovo elenco di colonne (come un array, racchiuso in un risultato JSON) che popolerà le mie caselle di completamento automatico.

Il mio problema è che il completamento automatico non fa una distinzione tra le parole e invece insiste nel farlo carattere di c, h, a, r, a, c, t, e, r. È molto fastidioso. Ecco il codice:

function PopulateColumnsList(list) { 
    $(".columnDropdown").setOptions({ data: list });
}

$(document).ready(function() {
    $(".columnDropdown").autocomplete("", {
        width: 320,
        max: 14,
        highlight: false,
        minChars: 0,
        scroll: true,
        scrollHeight: 300
    });

    $("#Data").change(function() {
        $.ajax({
            url: "/Home/ColumnNamesForDataSelect",
           type: "GET",
           data: { DataSelectID: parseInt($('#Data').val()) },
            success: PopulateColumnsList
       });
  });

});

Il Get restituisce questa risposta:

  

[" Memo " " Balance "]

Il completamento automatico di Butmy mostrerà ognuno di questi come lettere singole anziché due: Memo, Bilanciamento. Ho pensato che fosse corretto poiché il codice di esempio mostra un modo simile per restituire il risultato.

Qualche idea?

Grazie in anticipo.

È stato utile?

Soluzione

Possibile che tu mostri un esempio di ciò che vuoi? Non sto seguendo il cento per cento.

Il mio completamento automatico è solo che l'utente inizia a digitare in una casella di testo e osserva le lettere che vengono digitate e restituisce le possibili parole con quel risultato.

Il modo in cui lo sto facendo è questo:

// JavaScript file
$("#id").autocomplete("AutoFill", { delay: 1 });


// view
public ContentResult AutoFill(string q)
{
    var result = // go to database and grab all words that Start with whatever is in q.

    string sendBack = null;
    for (int i = 0; i < result.Count; i++)
    {
        sendBack += result[i] + Environment.NewLine;
    }
    return Content(sendBack);
}

Non sono sicuro che ciò ti aiuti affatto.

Altri suggerimenti

Mi rendo conto che questo potrebbe essere un discorso folle, né è una gran parte della risposta, ma dal momento che sembra iterare gli elementi in ogni pedice della risposta, hai provato a racchiudere la tua risposta in un altro array come, [[" Memo ", " Balance "]] ?

Bene, sei vincolante per l'evento onChange (), che sarebbe lettera per lettera. Mi sono imbattuto in qualcosa di simile e volevo l'intero valore. Ho gestito questo sostituendo la funzione parse () e specificando il mio parser / formato XML, quindi ho ignorato la funzione result () per analizzare i dati di riga [] che ho impostato nella funzione parse ().

Come si utilizza POST con jQuery Autocompleter?

Quindi, in pratica, ho sempre la riga [] con Dati e Nome dalla selezione (puoi anche fare JSON).

E dovrai anche sovrascrivere la funzione formatItem () per gestire il tuo nuovo array di righe [].

Esistono diversi completatori automatici jQuery. Sarebbe utile se menzionassi quale stai usando. Ad esempio, non sembra http://docs.jquery.com/Plugins/Autocomplete / setOptions è setOptions che stai utilizzando?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top