下拉列表不会显示值大于20的选项

时间:2015-01-19 15:58:33

标签: jquery

这非常奇怪,我不确定这里发生了什么。我会尽力解释。

我有一个选择菜单,在该菜单中我缩小了结果,因此它只显示该特定模块所需的内容。要做到这一点,我抓住了所需的值,只显示那些具有这些值的选项。除非我的值超过20,否则一切似乎都能正常工作。

一开始我可以显示所有值,我有70个,但是一旦它们被隐藏,我就无法获得超过20的值甚至手动显示。

在控制台中,我尝试了一些尝试让它显示出来。 (我使用列表中的最后一个因为很容易发现)

$("select[name='Type'] option[value='70']").show().prop('disabled', false);

这是将html更改为

<option value="70" style="display: block;">Title Form Availability</option>

并删除了display:none;,但它仍然没有显示在我的选择菜单中。

我可以为最多20的任何值编写相同的代码,它将显示在屏幕上。

选项标签可以有最大值吗?如果这是真的,为什么我可以在屏幕首次加载时将它们全部显示出来?

我对此感到困惑,并且感谢任何帮助!

我甚至有一个jsFiddel显示正在发生的事情 http://jsfiddle.net/005x7wye/

1 个答案:

答案 0 :(得分:0)

似乎.hide().show()函数在option元素的某些浏览器中不起作用。由于未针对select项触发渲染,因此生成的大小不正确。

解决此问题的解决方法是使用.remove() / .detach().append() / .prepend()函数添加和删除选项。

例如:

var options = [];

$("select[name='FormTypeId'] option").each(
    function() {
        options.push($(this).detach());
    }
);

$("select[name='FormTypeId']").prepend(options[0]);
$("select[name='FormTypeId']").prepend(options[20]);
$("select[name='FormTypeId']").prepend(options[70]);

http://jsfiddle.net/005x7wye/1/