Pregunta

Estoy usando jQuery Autocomplete y MVC para llenar una lista desplegable con un montón de nombres de columna.

Cada vez que un usuario cambia el valor de un DropDownBox en mi formulario, solicito a mi controlador que devuelva una nueva lista de columnas (como una matriz, envuelta en un resultado JSON) que llenará mis cuadros de Autocompletar.

Mi problema es que el autocompletado no hace una distinción entre palabras y en su lugar insiste en hacerlo con caracteres de c, h, a, r, a, c, t, e, r. Es muy molesto. Aquí está el código:

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

});

El Get devuelve esta respuesta:

  

[" Memo ", " Saldo "]

Butmy Autocompletar mostrará cada uno de estos como letras individuales en lugar de dos: Memo, Balance. Pensé que esto era correcto ya que el código de ejemplo muestra una forma similar de devolver el resultado.

¿Alguna idea?

Gracias de antemano.

¿Fue útil?

Solución

¿Es posible que muestres un ejemplo de lo que quieres? No estoy siguiendo al cien por cien.

Mi autocompletar es solo cuando el usuario comienza a escribir en un cuadro de texto y mira las letras que se están escribiendo y devuelve las posibles palabras con ese resultado.

La forma en que lo estoy haciendo es esta:

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

No estoy seguro de si eso te ayuda en absoluto.

Otros consejos

Me doy cuenta de que esto puede ser una charla loca, y tampoco es una gran respuesta, pero como parece estar iterando sobre los elementos en cada subíndice de la respuesta, ¿has intentado ajustar tu respuesta en otra matriz como, [[" Memo ", " Balance "]] ?

Bueno, estás vinculando al evento onChange (), que sería letra por letra. Me encontré con algo similar, y quería todo el valor. Manejé esto anulando la función parse () y especificando mi analizador / formato XML, luego exageré la función result () para analizar la fila [] datos que establecí en la función parse ().

¿Cómo usa POST con jQuery Autocompleter?

Básicamente, siempre tengo la fila [] con Datos y Nombre de la selección (u puede hacer JSON también).

Y, también necesitarás anular la función formatItem () para manejar tu nueva fila [] array.

Hay varios autocompletadores jQuery por ahí. Ayudaría si mencionara cuál está utilizando. Por ejemplo, no se parece a http://docs.jquery.com/Plugins/Autocomplete / setOptions es el setOptions que está utilizando?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top