我正在尝试使用此插件,除了选择列表功能外,还可以将选择列表转换为用户可以在其中键入其选择的组合框。
http://vladimir-k.blogspot.com/2009/02/sexy-combo-jquery-plugin.html
我遇到的问题是,当选择列表位于jquery对话框内时,它不再具有下拉功能。如果您点击标签或输入已输入的已知值的前几个字母,则自动完成功能仍然有效,但是没有出现包含选项的框。有没有人遇到过这个?有没有已知的解决方案/解决方法?
来自site.master的
<link href="<%= Url.Content("~/Content/sexy-combo.css") %>" rel="stylesheet" type="text/css" />
<link href="<%= Url.Content("~/Content/sexy/sexy.css") %>" rel="stylesheet" type="text/css" />
<link href="<%= Url.Content("~/Content/custom/custom.css") %>" rel="stylesheet" type="text/css" />
<script src="<%= Url.Content("~/Scripts/jquery.sexy-combo.min.js") %>" type="text/javascript"></script>
<script src="<%= Url.Content("~/Scripts/jquery.bgiframe.min.js") %>" type="text/javascript"></script>
来自EditProduct.ascx的(在对话框中加载)
<script type="text/javascript">
$('#subCategories').sexyCombo();
</script>
<%: Html.DropDownList("CategoryId", new SelectList(Model.ProductCategories, "CategoryId", "CategoryName", Model.Product.CategoryId), new{ id="subCategories"}) %>
答案 0 :(得分:1)
我从谷歌代码页上的一些评论中找到了解决方案。在jquery.sexy-combo.js脚本的第194行附近有这样一行:
this.singleItemHeight = this.listItems.outerHeight();
问题是,在jquery对话框中,无论出于何种原因,listItems.outerHeight();每次都返回0。因此,为了解决此问题并获得正确的行为,有人建议将singleItemheight设置为某个任意值(如果它设置为0),如下所示:
if (this.singleItemHeight == 0)
{
this.singleItemHeight = 20;
}
感谢您的建议,我真的不想重写我自己的插件,因为我在旅途中有太多的东西。
答案 1 :(得分:0)
看起来插件使用的是旧版本的JQuery,并没有积极维护。 Google代码页上链接了一个fork / alternative:http://code.google.com/p/sexy-combo/
或者,您可以查看JQueryUI自动完成小部件:http://jqueryui.com/demos/autocomplete/
答案 2 :(得分:0)
我们过去常常在我们的网站上使用这个小部件。我们已经放弃使用它来支持使用jquery.ui.button的自定义jquery.ui插件,特别是一个buttonset。 sexycombo插件有许多问题对我们来说效果不佳。
我建议你自己写一下;实际上很简单。
http://jqueryui.com/demos/button/#splitbutton
这些页面为您提供了良好的开端,包括所需的标记。它可能无法满足您的所有需求,但您可以通过按钮旁边的输入轻松实现自动完成功能。