2011-07-01 78 views
0

我正在为我的HTML表单寻找一个jQuery/JavaScript选择框。在我的情况下,具体要求是我需要能够禁用控件菜单中的某些选项。我想知道是否有人已经发现了一个插件,允许我使用类似带禁用选项的jQuery选择框

$("#selectControl").change(function() 
{ 
    $(this).find(":selected").attr("disabled", "disabled"); 
}); 

当然做到这一点,最好是容易的attr()功能将不生成元素上工作,但有一个包含这个功能的jQuery插件?

编辑

为了让自己更清楚,我会说这是不同的:我有一个HTML的结构,看起来像一个很好的风格选择框,它背后隐藏的实际<select>控制。可以在<select>中禁用<option>,但在大多数jQuery插件中禁用样式选择框。我问是否有一个插件,允许我禁用在美化<select>元素中的某些选项。

感谢,

詹姆斯

+0

禁用和选择实际上属性不是属性,在jQuery 1.6中更新。查看prop()文档:http://api.jquery.com/prop/ – AlienWebguy

+0

@AlienWebguy:谢谢你,但你错过了我的问题。我编辑过让自己更清楚 - 对不起。 – Bojangles

+0

对不起。我不知道任何副作用,但jQuery是非常灵活的,你应该能够扩展你当前使用的任何插件来支持禁用选项。你可以做一个jsbin或jsfiddle页面或提供一个链接到你的例子,所以我可以看到插件代码? – AlienWebguy

回答

0

那么,事实证明,我看起来不够努力。对于那些想和我一样的人,我发现了this plugin。为了让我的“禁用select”行为,我使用了链接到某个URL上的页面上的jQuery tie插件。这是一个很大的选择框插件,但缩小它应该没问题。这个盒子很容易用CSS来设计,并且可以使用边框宽度技巧完全没有图像。如果我有足够的兴趣,我会写一篇关于如何设计这些盒子的教程。

编辑

上面链接实际上并没有很好地工作的插件,所以我只是写我自己。如果有人想看看,我会发布一个链接。

1

我不知道我对你的问题的跟踪,但下面的代码片段运行在一个下拉菜单,隐藏某些选项:

//show them all 
$('#<%= ddlRank.ClientID %> span').each(
    function() { 
     var opt = $(this).find("option").show(); 
     $(this).replaceWith(opt); 
    } 
); 

//hide unrelated 
var selectionLost = false; 
$('#<%= ddlRank.ClientID %> option').each(
    function() { 
     if ($.inArray($(this).val(), related) == -1) { 
      if ($(this).attr("selected")) { 
       $(this).removeAttr("selected"); 
       selectionLost = true; 
      } 
      $(this).wrap("<span>").hide(); 
     } 
    } 
); 

秘密酱(将它们与“显示全部”代码结合在一起)是:

$(this).wrap("<span>").hide();