在jquery对话框中没有工作的sexy-combobox插件

时间:2010-09-16 19:30:45

标签: jquery asp.net-mvc combobox dialog

我正在尝试使用此插件,除了选择列表功能外,还可以将选择列表转换为用户可以在其中键入其选择的组合框。

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"}) %>

3 个答案:

答案 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

这些页面为您提供了良好的开端,包括所需的标记。它可能无法满足您的所有需求,但您可以通过按钮旁边的输入轻松实现自动完成功能。