Question

J'utilise jQuery Autocomplete et MVC pour remplir une liste déroulante avec un tas de noms de colonnes.

Chaque fois qu'un utilisateur modifie la valeur d'un DropDownBox sur mon formulaire, je demande à mon contrôleur de renvoyer une nouvelle liste de colonnes (sous la forme d'un tableau, encapsulé dans un résultat JSON) qui renseignera mes champs de saisie semi-automatique.

Mon problème est que l'auto-complétion ne fait pas de distinction entre les mots et insiste pour le faire, caractère par c, h, a, r, a, c, t, e, r. C'est vraiment agaçant. Voici le code:

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
       });
  });

});

La commande Get renvoie cette réponse:

  

["Mémo", "Balance"]

Butmy AutoComplete affiche chacun de ces éléments sous forme de lettres uniques plutôt que deux: Mémo, Balance. Je pensais que c'était correct car l'exemple de code montre une manière similaire de renvoyer le résultat.

Des idées?

Merci d'avance.

Était-ce utile?

La solution

Possible pour vous de montrer un exemple de ce que vous voulez? Je ne suis pas à cent pour cent.

Mon autocompléte est juste que l'utilisateur commence à taper dans une zone de texte et regarde les lettres qui sont saisies et renvoie les mots possibles avec ce résultat.

Voici comment je le fais:

// 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);
}

Je ne sais pas si cela vous aide du tout.

Autres conseils

Je me rends compte que ce sont peut-être des propos loufoques, pas plus qu’une réponse, mais comme il semble itérer sur les éléments de chaque indice de la réponse, avez-vous essayé d’envelopper votre réponse dans un autre tableau comme [[" Mémo "," Solde "]] ?

Eh bien, vous vous associez à l'événement onChange (), qui serait lettre par lettre. J'ai rencontré quelque chose de similaire et je voulais la valeur entière. J'ai géré cela en remplaçant la fonction parse () et en spécifiant mon format / analyseur XML, puis j'ai surchargé la fonction result () pour analyser les données de la ligne [] que j'ai définies dans la fonction parse ().

Comment utilisez-vous POST avec jQuery Autocompleter?

Donc, en gros, j'ai toujours la ligne [] avec les données et le nom de la sélection (vous pouvez aussi utiliser JSON).

Et vous devrez également remplacer la fonction formatItem () pour gérer votre nouveau tableau [].

Il existe plusieurs autocompléteurs jQuery. Il serait utile que vous indiquiez lequel vous utilisez. Par exemple, cela ne ressemble pas à http://docs.jquery.com/Plugins/Autocomplete / setOptions est-ce que setOptions est utilisé?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top