我有以下代码通过removeAttr函数删除disabled属性来解锁下拉列表。此示例在Ubuntu的Mozilla Firefox 24中不起作用。但是,如果在RemoveAttr函数之后添加警报,它将完全正常,如下一个示例所示:
$("#dropdown1").change(function() {
$('#dropdown2').find('option').remove().end();
if (obj[$(this).val()] !== undefined)
{
$('#dropdown2').removeAttr('disabled');
$('#dropdown2').append('<option></option>' + obj[$(this).val()]);
$('#dropdown2').attr('required', true);
}
else
{
$('#dropdown2').attr('disabled', true);
$('#dropdown2').attr('required', false);
}
});
工作示例:
$("#dropdown1").change(function() {
$('#dropdown2').find('option').remove().end();
if (obj[$(this).val()] !== undefined)
{
$('#dropdown2').removeAttr('disabled');
alert("REMOVED");
$('#dropdown2').append('<option></option>' + obj[$(this).val()]);
$('#dropdown2').attr('required', true);
}
else
{
$('#dropdown2').attr('disabled', true);
$('#dropdown2').attr('required', false);
}
});
.prop的示例也不起作用:
$("#dropdown1").change(function() {
$('#dropdown2').find('option').remove().end();
if (obj[$(this).val()] !== undefined)
{
$('#dropdown2').prop('disabled', false);
$('#dropdown2').append('<option></option>' + obj[$(this).val()]);
$('#dropdown2').attr('required', true);
}
else
{
$('#dropdown2').prop('disabled', true);
$('#dropdown2').attr('required', false);
}
});
答案 0 :(得分:4)
您应该使用.prop()来设置已禁用的媒体资源状态
启用
$('#dropdown2').prop('disabled', false);
禁用
$('#dropdown2').prop('disabled', true);
答案 1 :(得分:3)
来自(文档)(http://api.jquery.com/attr/#entry-longdesc):
从jQuery 1.6开始,.attr()方法为属性返回undefined 尚未设定。检索和更改DOM属性,例如 选中,选中或禁用表单元素的状态,使用 .prop()方法。
所以你应该使用.prop()函数。
$('#dropdown2').prop('disabled', false); // Enables the element
$('#dropdown2').prop('disabled', true ); // Disables the element
答案 2 :(得分:1)