0

我有一个正在过滤的下拉列表(例如..(toggleOptionVisibility 在选项周围放置一个跨度,如果为真,跨度是可见的)):

case 'Actimel drank naturel':
            $(eenheid + ' option[value="101"]').toggleOptionVisibility( true );
            $(eenheid + ' option[value="102"]').toggleOptionVisibility( true );
            $(eenheid + ' option[value="103"]').toggleOptionVisibility( true );
            $(eenheid + ' option[value="116"]').toggleOptionVisibility( true );
            break;
case 'Roosvicee multivit (siroop)':
            $(eenheid + ' option[value="101"]').toggleOptionVisibility( true );
            $(eenheid + ' option[value="102"]').toggleOptionVisibility( true );
            $(eenheid + ' option[value="103"]').toggleOptionVisibility( true );
            $(eenheid + ' option[value="104"]').toggleOptionVisibility( true );
            $(eenheid + ' option[value="111"]').toggleOptionVisibility( true );
            $(eenheid + ' option[value="116"]').toggleOptionVisibility( true );
            break;

过滤有效,只是展示了一个关于我如何做的例子。

现在的问题是,无论我在提交表单时选择什么, selected="selected" 都是用户选择的(它在 IE 中工作),但下拉列表本身在 Firefox 中显示倒数第二个值和最后一个值在铬。

selected="selected" 仍然是用户输入的内容,即使在 Firefox 和 chrome 中也是如此。

这是我的问题,你们中有人知道为什么会这样吗,为什么它在 IE 中有效,而不是在 chrome/firefox 中有效?

因为大家都喜欢代码,所以我会多发一点。

$(eenheid + ' option').toggleOptionVisibility( false );

在被过滤之前隐藏所有选项以确保仅显示过滤的选项。

4

2 回答 2

1

对于<span>周围的<option>讨论:

interface HTMLSelectElement : HTMLElement {
    ...
    readonly attribute HTMLCollection selectedOptions;
    ...
};

selectedOptions必须是列表<option><optgroup>以获得最大兼容性。不禁止使用<span>,但风险自负

http://www.w3.org/TR/html5/forms.html#the-select-element

于 2013-06-05T13:38:45.050 回答
0
$('select option[value="..."]').toggleOptionVisibility(false);
$('select').val($('#select-test > option:first'));

要获得选定的值:

$('select option:selected').val()

示例:http: //jsfiddle.net/d3FuV/5/

于 2013-06-05T11:46:57.257 回答