【发布时间】:2011-09-28 09:10:39
【问题描述】:
全部,
我有两个看起来像这样的选择:
<select name='input_34' id='input_1_34' class='small gfield_select' tabindex='1' >
<option value='29' >Alabama</option>
<option value='34' >Alaska</option>
<option value='42' >Arizona</option>
....
<select name='input_13' id='input_13' class='small gfield_select' tabindex="2">
<option value='-1' selected='selected'>Select a base</option>
<option class="level-0" value="29">Alabama</option>
<option class="level-1" value="30"> Anniston Army Depot</option>
<option class="level-1" value="333"> Fort Rucker</option>
<option class="level-1" value="32"> Maxwell-Gunter AFB</option>
<option class="level-1" value="33"> Redstone Arsenal</option>
<option class="level-0" value="34">Alaska</option>
<option class="level-1" value="35"> Eielson AFB</option>
<option class="level-1" value="36"> Elmendorf AFB</option>
<option class="level-1" value="37"> Fort Greely</option>
<option class="level-1" value="38"> Fort Richardson</option>
<option class="level-1" value="39"> Fort Wainwright</option>
<option class="level-1" value="40"> USCG ISC Kodiak</option>
<option class="level-1" value="41"> USCG Juneau</option>
<option class="level-1" value="42"> USCG Ketchikan</option>
<option class="level-0" value="43">Arizona</option>
我想要做的是在第一个下拉菜单中选择一个状态,然后删除第二个下拉菜单中的所有选项,除了那些在选定状态下列出的选项。
到目前为止,我所做的是从第一个下拉列表中确定所选状态,然后获取该选项在第二个下拉列表中的位置的索引。我应该如何从那里着手?我正在考虑使用 .next() 来通过 .level-1 类的每个选项,在 .level-0 处停止。一旦我有了它,我就可以使用 .remove() 删除除那些之外的所有其他选项。
到目前为止,这是我的代码:
jQuery(document).ready(function(){
jQuery('#input_1_34').bind('change', function()
{
//get selected value from drop down
var selectedValue = jQuery("#input_1_34").val();
//hide everything but bases for the selected state
//jQuery("#input_13 option[value=" + selectedValue + "]").next().remove();
selectedIndex = jQuery("#input_13 option[value=" + selectedValue + "]").index();
alert (selectedIndex);
});
});
【问题讨论】:
-
我的第一个想法是,我认为您的设置方式让这个问题变得更加困难。第二个选择控件是否必须具有所有这些选项才能开始?似乎在第一个选择完成之前禁用该控件,然后用适当的选项填充它会更容易,但也许有某种用户交互流程不允许这样做?
-
我同意您可以通过更改 html 让您的生活更轻松,如果您想要这样做,请查看我的回答!
-
@kinakuta:@user6641 应该按照目前的方式进行操作,以便优雅降级。尽管我强烈推荐
<optgroup>元素,就像我在更新的答案中一样。 -
@patrick_dw 从严格的渐进增强/优雅降级的角度来看,我可以理解您的意思,但从 ui 的角度来看,以这种方式设置两个控件并不理想。
-
@kinakuta:是的,我认为在需要填充之前隐藏(或删除)第二个是个好主意。