He implementado la función Autocompletar y estoy teniendo problemas con la etiqueta contra el valor en el cuadro de texto después de que el elemento está seleccionado. Cuando yo escriba un código postal, puedo ver la etiqueta en el menú desplegable:

JQuery UI Autocomplete .Net MVC: Cómo mostrar la etiqueta a la hora seleccionada, pero guardar el valor

pero después de seleccionar uno, en lugar de la etiqueta que se muestra en el cuadro de texto, el valor (que es el IDENTIFICADOR que debe ser guardado en la base de datos) se muestra:

JQuery UI Autocomplete .Net MVC: Cómo mostrar la etiqueta a la hora seleccionada, pero guardar el valor

¿Cómo puedo todavía muéstrele la etiqueta después de seleccionado, pero luego, cuando el formulario se guarda, se pasa a la ZipCodeID para el campo?

Aquí mi método de Controlador:

public JsonResult FindZipCode(string term)
    {
        VetClinicDataContext db = new VetClinicDataContext();

        var zipCodes = from c in db.ZipCodes
                       where c.ZipCodeNum.ToString().StartsWith(term)
                       select new { value = c.ZipCodeID, label = c.ZipCodeNum};

        return this.Json(zipCodes, JsonRequestBehavior.AllowGet);
    }

Y aquí está mi lenguaje:

<script type="text/javascript">
    $(document).ready(function() {
        $("#ZipCodeID").autocomplete({
                  source: '<%= Url.Action("FindZipCode", "Customers") %>',
        });
    });
</script>

<div class="ui-widget"><input type="text" name="ZipCodeID" id="ZipCodeID" /></div>

EDIT: Aquí está mi trabajo final código:

Controlador:

public JsonResult FindZipCode(string term)
    {
        VetClinicDataContext db = new VetClinicDataContext();

        var zipCodes = from c in db.ZipCodes
                       where c.ZipCodeNum.ToString().StartsWith(term)
                       select new { value = c.ZipCodeID, label = c.ZipCodeNum};

        return this.Json(zipCodes, JsonRequestBehavior.AllowGet);
    }

y de marcado:

<script type="text/javascript">
    $(document).ready(function() {
        $("#ddZipCode").autocomplete({
            source: '<%= Url.Action("FindZipCode", "Customers") %>',
            select: function(event, ui) {
                var zipCodeID = parseInt(ui.item.value, 1);
                $("#ddZipCode").val(ui.item.label);
                $("#ZipCodeID").val(ui.item.value);
                return false;
            }
        });
    });
</script>

<div class="ui-widget"><input type="text" name="ddZipCode" id="ddZipCode" /></div>
<%= Html.Hidden("ZipCodeID")%>
no son los códigos postales únicas para que no tengan que aparte de identificación? No puedo entender por qué se quiere de otra manera
buen punto! cuando originalmente construido la base de datos era bastante nuevo en él. Me puse mis códigos postales de un auto incrementa ID no es realmente el pensamiento de que los códigos postales son únicos en sí mismos. Pudiera volver atrás y cambiar ahora, pero los efectos tricke en muchos otros cambios en otros lugares. Probablemente tendría que hacerlo de todos modos… 🙂 Gracias!
No hay problemas. Es genial que estás aprendiendo cosas y tomar un enfoque pragmático.
¿Cómo enviar la búsqueda de «término» en su método FindZipCode automáticamente?

OriginalEl autor Ben | 2010-09-28

2 Comentarios

  1. 6

    Corto de cambiar su modelo de no usar un ID diferente para los códigos postales…

    Crear un campo oculto para el código postal id. Cambiar el seleccionar el comportamiento para rellenar el campo oculto con el ID y la visible con la etiqueta.

    Ver La muestra de cómo lograr este

    Han considerado que lo que sucede si escribe su propia?

    OriginalEl autor Luke Schafer

  2. 4

    Si usted agregue las líneas siguientes se mostrará la etiqueta y NO el id (que yo pensaba que debería ser el predeterminado, pero bueno).

    select: function (event, ui) {
         event.preventDefault();
         event.target.innerText = ui.item.label;
    }
    Cuando me encuentro con esto obtengo un error de tiempo de ejecución de JavaScript: Error: NO_MODIFICATION_ALLOWED_ERR: DOM Exception 7 Cualquier idea sobre cómo conseguir alrededor de esto?

    OriginalEl autor sca_tone

Dejar respuesta

Please enter your comment!
Please enter your name here