removeAttr不会删除Firefox中的禁用属性

时间:2013-09-26 13:46:32

标签: jquery firefox

我有以下代码通过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);
        }

    });

3 个答案:

答案 0 :(得分:4)

您应该使用.prop()来设置已禁用的媒体资源状态

启用

$('#dropdown2').prop('disabled', false);

禁用

$('#dropdown2').prop('disabled', true);

阅读:Attributes vs. Properties

答案 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)

使用prop

$('#dropdown2').prop('disabled', false);

禁用true make禁用元素并禁用false启用元素