jQuery选择了选项

时间:2013-06-05 11:21:19

标签: jquery switch-statement

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

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;

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

现在问题是,无论我在提交表单时选择什么,所选的=“已选择”是用户选择的任何内容(它在IE中工作),但下拉列表本身显示Firefox中的第二个最后一个值Chrome中的最后一个值。

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

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

因为每个人都喜欢代码,所以我会发布更多信息。

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

要在过滤之前隐藏所有选项,以确保只显示已过滤的选项。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

$('select option[value="..."]').toggleOptionVisibility(false);
$('select').val($('#select-test > option:first'));

获取所选值:

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

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

相关问题