我尝试在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");
}
});
我在这里做错了吗?
答案 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);