child.attr('selectedIndex', 1);
在我的情况下似乎不起作用。
我有两个级联下拉列表,一个父级和一个子级。首先,它们都包含相同的值。当用户从父选择框中选择一个项目时,它会作为子选择中的一个选项被删除。
有时,父选择框只有 3 个项目,默认值和 2 个值。在这种情况下,当用户选择父值时,子选择中唯一可能的选择是剩余的非默认值。
因此,当父级只有两个值时,我想在用户选择父级选择时自动选择留在子框中的非默认值。
我开始的 HTML 可能如下所示:
<select name="from" class="from">
<option value="" selected="selected" class="default">Select a value</option>
<option value="na">One</option>
<option value="ja">Two</option>
</select>
<select name="to" class="to">
<option value="" selected="selected" class="default">Select a value</option>
<option value="na">One</option>
<option value="ja">Two</option>
</select>
然后,如果用户在父项中选择“一”,则子选择应自动选择“二”。
Here is my jQuery I use to remove a value from the child when a value in the parent is selected:
(function ($) {
function cascadeSelect(parent, child) {
var childOptions = child.find('option:not(.default)');
child.data('options', childOptions);
parent.change(function () {
childOptions.remove();
child.append(child.data('options').filter('.' + this.value))
.change();
if (child.data('options').length == 2) {
[select the last option here]
}
})
if (parent.val()) {
childOptions.not('.default, .' + parent.val()).remove();
}
}
$(function () {
cascadeForm = $('.askform');
pulldown_from = cascadeForm.find('.from');
pulldown_to = cascadeForm.find('.to');
cascadeSelect(pulldown_from, pulldown_to);
});
我添加了检查子选择中是否只有两个选项的行:
if (child.data('options').length == 2) {
[select the non-default child option here]
}
但我不知道如何选择非默认子选项。我想我可以通过使用 .selectedIndex 来做到这一点:
child.attr('selectedIndex', 1);
但这似乎引用了原始索引值(在我删除父项中选择的值之前的索引)。
那么,当父项中只有两个选项开始时,如何在子项选择中自动选择唯一的非默认选项?