我有一个正在过滤的下拉列表(例如..(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 );
要在过滤之前隐藏所有选项,以确保只显示已过滤的选项。
答案 0 :(得分:1)
<span>
围绕<option>
讨论:
interface HTMLSelectElement : HTMLElement {
...
readonly attribute HTMLCollection selectedOptions;
...
};
selectedOptions
必须是<option>
或<optgroup>
的列表才能获得最大兼容性。不禁止使用<span>
,而是您自己承担风险。
答案 1 :(得分:0)
$('select option[value="..."]').toggleOptionVisibility(false);
$('select').val($('#select-test > option:first'));
获取所选值:
$('select option:selected').val()