jQuery属性禁用不起作用

时间:2014-12-16 13:24:58

标签: jquery

我尝试在jQuery中禁用(并删除)某些属性,但是当值更改并设置为"禁用"时,它似乎无效。一些领域。当更改下拉框的值时,将运行此脚本。

以下代码:

$(".tipo_frete").change(function(){
    if($(this).val()  == "FOB" ){
        $(".id_transp").attr("disabled");
        $(".id_transp").val("");
        $(".nome_transp").attr("disabled");
        $(".nome_transp").val("");
        $(".valor_frete").attr("disabled");                     
        $(".valor_frete").val("");                      
    }else{
        $(".id_transp").removeAttr("disabled");
        $(".valor_frete").removeAttr("disabled");           
        $(".nome_transp").removeAttr("disabled");           
    }
});

我在这里做错了吗?

4 个答案:

答案 0 :(得分:3)

使用 prop()

停用

$(".id_transp").prop("disabled",true);

启用

$(".id_transp").prop("disabled",false);

注意:$(".id_transp").attr("disabled");您必须传递2个参数,例如$(".id_transp").attr("disabled",true)

简化您的代码

$(".tipo_frete").change(function () {
    if ($(this).val() == "FOB") {
        $(".id_transp,.nome_transp,.valor_frete").val("").prop("disabled", true);
    } else {
        $(".id_transp,.nome_transp,.valor_frete").prop("disabled", false);
    }
});

答案 1 :(得分:2)

是的,您在attr()属性中缺少另一个参数。
试试这个:

$(".tipo_frete").change(function(){
    if($(this).val()  == "FOB" ){
        $(".id_transp").attr("disabled","disabled");
        $(".id_transp").val("");
        $(".nome_transp").attr("disabled","disabled");
        $(".nome_transp").val("");
        $(".valor_frete").attr("disabled","disabled");                      
        $(".valor_frete").val("");                      
    }else{
        $(".id_transp").removeAttr("disabled");
        $(".valor_frete").removeAttr("disabled");           
        $(".nome_transp").removeAttr("disabled");           
    }
});

但是当你删除这些属性时,你只保留一个参数,它将被删除。

答案 2 :(得分:2)

在jQuery中,当你想获得属性值时,必须使用 .attr('key') .prop('key')一个参数,但是如果要为属性设置值,则必须设置两个参数,如 .attr('key','value') .prop('key','value' )

$(".id_transp").attr("disabled", "disabled");

//OR

$(".id_transp").prop("disabled", true);

答案 3 :(得分:1)

元素等于选择器'.id_transp';

  var $element = $(...);
        $element.prop('disabled', true);
        $element.attr('disabled', true); 

        // The following do not require jQuery
        $element.get(0).disabled = true;
        $element.get(0).setAttribute('disabled', true);
        $element[0].disabled = true;
        $element[0].setAttribute('disabled', true);