Implementé Autocompletar y tengo problemas con la etiqueta frente al valor en el cuadro de texto después de seleccionar el elemento. Cuando escribo en un código postal, veo la etiqueta en el menú desplegable:JQuery UI Autocompletar con .Net MVC: Cómo mostrar la etiqueta cuando está seleccionada, pero guardar el valor
pero después de seleccionar uno, en lugar de la etiqueta que muestra en el cuadro de texto, el valor (que es el ID que necesita para ser guardado en la base de datos) se visualiza:
¿Cómo siguen mostrando la etiqueta después de que se ha seleccionado, pero luego cuando se guarda el formulario, se pasa el ZipCodeID para el campo?
Aquí es mi método de control:
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í es mi marcado:
<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 código de trabajo final:
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 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 códigos postales lo suficientemente únicos como para no necesitar una identificación separada? No puedo entender por qué lo querrías de otra manera –
¡buen punto! cuando originalmente construí la base de datos, era bastante nuevo en eso. Configuré mis códigos postales para tener un ID automático incrementado sin pensar realmente que los códigos postales son únicos. Podría volver atrás y cambiarlo ahora, pero los efectos se convertirían en muchos otros cambios en otros lugares. Probablemente debería hacerlo de todos modos ... :) ¡Gracias! – Ben
Sin problemas. Es genial que estés aprendiendo cosas y teniendo un enfoque pragmático. –