选择:隐藏辅助选择上的选定选项

时间:2012-03-02 20:07:24

标签: javascript jquery

我有两个选择,其中包含相同的元素(选项)。 我想要做的是当用户从第一个选择框中选择一个值时,第二个选择框隐藏该选项,并且如果所选选项与第一个选择中的选项相同,则自动选择第一个可见选项。

我知道:first选择一组"对象"中的第一个元素,:visible只选择"可见"那些,所以我认为使用:first的{​​{1}}应该可行,但我得到的是根本没有选择。

如果删除:visible,除非第二个选择框选择了第一个元素,并且用户选择第一个选择框中的第一个元素

这是我到目前为止所记录的,请记住,我已尝试:visible:first任意组合,但我认为这里的问题是"隐藏hasn&当我使用:visible

时,#39; t完成了它的工作
:visible

2 个答案:

答案 0 :(得分:1)

这是一种方法

/* cache a set of options from second select*/
var $opts=$('#style_position_extra option').clone();

$('#style_position').change(function(){
    var sel_pos_id      = $(this).val();
    /* find matching option copy*/
    var $newOpts=$opts.filter(function(){
            return this.value !=sel_pos_id;                                             
    }).clone();
    /* replace exisiting options with match*/
    $('#style_position_extra').html( $newOpts);
});

这是另一个可能更简单的

$('#style_position').change(function(){
    var selected=$(this).find('option').not(':selected').clone();
    $('#style_position_extra').html(selected);
});

答案 1 :(得分:0)

感谢charlietfl我想出来,这是最终答案:

$('#style_position').change(function(){
    var sel_pos_id      = $(this).val();
    var sel_xtr_pos_id  = $('#style_position_extra').val();

    var selected=$(this).find('option').not(':selected').clone();
    $('#style_position_extra').html(selected)
    if(sel_pos_id!=sel_xtr_pos_id){
        $('#style_position_extra option[value=' + sel_xtr_pos_id + ']').attr('selected','selected');
    }
});

如果两个选项具有相同的选项,则此代码将自动选择其他选项,或者在第二个选择框中选择相同的选项