Dentro de un diálogo de jquery me gustaría utilizar la función de autocompletar jquery de jqueryUI.jQuery Autocompletar no aparece
entonces me han preparado una acción en mi Controlador (estoy usando ASP.NET MVC2) que es como sigue
public ActionResult GetForos(string startsWith, int pageSize)
{
// get records from underlying store
int totalCount = 0;
string whereClause = "Foro Like '" + startsWith + "%'";
List<Foro> allForos = _svc.GetPaged(whereClause, "Foro", 0, pageSize, out totalCount);
//transform records in form of Json data
List<ForoModelWS> foros = new List<ForoModelWS>();
foreach (Foro f in allForos)
foros.Add(new ForoModelWS() { id= Convert.ToString(f.ForoId),
text= f.Foro + ", Sezione: " + f.Sezione + ", " + f.AuthorityIdSource.Name });
return Json(foros);
}
Los ForoModelWS clase es una clase simple que se usa solamente para contener los datos que se transfieren en json. Aquí es
public class ForoModelWS
{
public string id;
public string text;
}
En el lado del cliente Tengo el siguiente código de jQuery:
<input id="theForo" />
<script type="text/javascript">
$(document).ready(function() {
$("#theForo").autocomplete({
source: function(request, response) {
$.ajax({
type: "post",
url: "/Foro/GetForos",
dataType: "json",
data: {
startsWith: request.term,
pageSize: 15
},
success: function(data) {
response($.map(data, function(item) {
return {
label: item.text,
value: item.text
}
}))
}
})
},
minLength: 2,
select: function(event, ui) {
},
open: function() {
$(this).removeClass("ui-corner-all").addClass("ui-corner-top");
},
close: function() {
$(this).removeClass("ui-corner-top").addClass("ui-corner-all");
}
});
});
</script>
Pero no aparece la ventana deslizante con los suggeestions. Si pongo una alerta dentro de la función de respuesta, puedo ver los datos correctos.
¿Extraño algo?
Gracias por ayudar a
primera EDITAR: Por otra parte, cómo cambiar el código para utilizar la propiedad "id" del elemento seleccionado en la lista devuelta?
2nd EDIT: He comprobado más con la herramienta de desarrollador de Chrome y he visto que cuando se inicia autocompletar aparece algún error. lo siguiente:
Uncaught TypeError: Cannot call method 'zIndex' of undefined @ _assets/js/jquery-ui-1.8.4.custom.min.js:317
Uncaught TypeError: Cannot read property 'element' of undefined @ _assets/js/jquery-ui-1.8.4.custom.min.js:321
Uncaught TypeError: Cannot read property 'element' of undefined @ _assets/js/jquery-ui-1.8.4.custom.min.js:320
Parece que el plugin autocompletar no encuentra un elemento cuando se trata de establecer el índice z de la corredera nivel sugerencia 1 hasta su contenedor. El primer error aparece cuando se abre el cuadro de diálogo de la interfaz de usuario de jquery. La entrada para la función de autocompletar está dentro de una pestaña jQuery que está dentro de un jQuery diálogo
3ª EDICIÓN: Estoy añadiendo el formato HTML para ser completa
<td width="40%">
<%= Html.LabelFor(model => model.ForoID)%>
<br />
<%= Html.HiddenFor(model => model.ForoID) %>
<input id="theForo" />
<%= Html.ValidationMessageFor(model => model.ForoID, "*")%>
</td>
El problema puede estar relacionado con el hecho de que lo está usando dentro del diálogo. ¿Qué sucede si usa la función autocompletar fuera del cuadro de diálogo? (tratando de descartar cosas). –
Parece que me parece bien. ¿Hay algún error de javascript? ¿Es tu css escondiéndolo o algo así? – Charlino
@Claudio and Charlino: Por favor, eche un vistazo a la pregunta editar – Lorenzo