如何仅在启用时设置选择框的值?

时间:2014-09-04 08:20:09

标签: javascript jquery

我有一个顶级选择框,当用户在此处进行选择时,我希望此值用于与此顶级框相关的所有以下选择框。

我遇到的问题是,如果任何一个较低的选择框被禁用,我希望上面的过程忽略这个选择框,因为它已经被分配了一个值。

显然,如果启用了较低的选择框,那么我想为其指定最高选择值。

要根据特定值禁用选择列表,我使用了:

$("select[name=f03]").eq(index).attr('disabled', 'disabled');

以下是我使用过但不起作用的jQuery:

var top_select = $("select[name=f07]").val();
$("select[name=f03]").each(function(index){
    if $("select[name=f03]").eq(index).is(':enabled'){
        $("select[name=f03]").eq(index).val(top_select);
    }
});

从这段代码开始,只有在启用时才会设置较低的选项([name = f03])。

3 个答案:

答案 0 :(得分:1)

首先我会禁用这样的选择:     $(“select [name = f03]”)。eq(index).prop('disabled',true);

其次,你的功能应该更简单:

$("select[name=f03]").each(function(){
    if ($(this).prop('disabled')) return;
    $(this).val(top_select);
});

答案 1 :(得分:1)

你应该使用jquery:enabled选择器,如下所示

  $("select[name=f03]:enabled").each(function(){   
   //execution
 });

 $("select[name=f03]:enabled").val("value");

这里是jsfiddle示例http://jsfiddle.net/kso2oqr5/1/

答案 2 :(得分:0)

禁用元素时,请使用.prop(property,value)

var top_select = $("select[name=f07]").val();
$('select[name="f03"]').val(function(){
    if(!this.disabled){
    return top_select;
    }
});

DEMO