removeAttr не удаляет отключенный атрибут в Firefox

0

У меня есть следующий код, который открывает раскрывающийся список, удаляя отключенный атрибут с помощью функции removeAttr. Этот пример не работает в Mozilla Firefox 24 для Ubuntu. Однако он отлично работает, если добавлено предупреждение после функции 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);
        }

    });
Теги:
firefox

3 ответа

4
Лучший ответ

Вы должны использовать .prop(), чтобы установить статус отключенного свойства

включить

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

отключить

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

Читать: Атрибуты и свойства

  • 1
    То же самое, все еще не работает: $ ("# 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

Из (документация) (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
  • 1
    Та же проблема. Не работает
  • 0
    @ user1029829 Если проблема остается, вы должны создать jsfiddle.net, воспроизводящий эту проблему
1

использовать опору

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

отключить true make отключить элемент и отключить false Включить элемент

  • 1
    Та же проблема. Не работает

Ещё вопросы

Сообщество Overcoder
Наверх
Меню