Задать вопрос
mrerberg
@mrerberg
Yep

Как убрать атрибут disabled у формы?

Всем привет!
Задача,которая стоит передо мной стоит: При нажатии на кнопку,атрибут disabled у fieldset должен убираться. Я использую очевидное решение,но не работает,вот это и вводит меня в ступор.
Код: https://jsfiddle.net/g1hxfcdm/5/

Заранее спасибо.
  • Вопрос задан
  • 1699 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 3
hummingbird
@hummingbird
Конкретно для одного fieldset правильно так:

var allFieldsets = document.querySelectorAll('fieldset')[0]
// <fieldset class="form__element">…</fieldset>

Это потому что вы в ответ получаете массив:

var allFieldsets = document.querySelectorAll('fieldset')
// NodeList [<fieldset class="form__element">]

А это полностью рабочий ваш пример: https://jsfiddle.net/g1hxfcdm/15/

Полезные ссылки:
https://developer.mozilla.org/ru/docs/Web/API/Docu...
https://developer.mozilla.org/ru/docs/Web/API/NodeList
Ответ написан
Stalker_RED
@Stalker_RED
Две ошибки:
1. кнопки нет
2. querySelectorAll возвращает NodeList, и у него нет метода removeAttribute
var mainPin = document.querySelector('button');
var allFieldsets = document.querySelector('fieldset'); // вместо querySelectorAll

mainPin.addEventListener('mouseup', function () {
  allFieldsets.removeAttribute('disabled');
});


вот это и вводит меня в ступор
В любой непонятной ситуации смотрите логи. в данном случае f12, чтобы открыть консоль, и там красненьким ошибки.
Ответ написан
0xD34F
@0xD34F Куратор тега JavaScript
const form = document.querySelector('form');

document.querySelector('button').addEventListener('click', () => {
  form.querySelectorAll('fieldset').forEach(n => n.disabled = false);

  // или

  for (const n of form.getElementsByTagName('fieldset')) {
    n.removeAttribute('disabled');
  }

  // или

  for (let i = 0; i < form.elements.length; i++) {
    if (form.elements[i].tagName === 'FIELDSET') {
      form.elements[i].attributes.removeNamedItem('disabled');
    }
  }
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы