У меня есть следующий код, который открывает раскрывающийся список, удаляя отключенный атрибут с помощью функции 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);
}
});
Вы должны использовать .prop(), чтобы установить статус отключенного свойства
включить
$('#dropdown2').prop('disabled', false);
отключить
$('#dropdown2').prop('disabled', true);
Читать: Атрибуты и свойства
Из (документация) (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
использовать опору
$('#dropdown2').prop('disabled', false);
отключить true make отключить элемент и отключить false Включить элемент