Правило EsLint для метки

у меня проблема

Правило EsLint для метки

Мои правила esLint:

"jsx-a11y/label-has-for": [ 2, {
      "components": [],
      "required": {
        "every": [ "nesting", "id" ]
      },
      "allowChildren": true
    }],

Я хочу только для того, чтобы убрать эту ошибку, или исправить, помогите мне, пожалуйста

Сообщение об ошибке: метка формы должна быть связана с элементом управления. (jsx-a11y/label-has-associated-control)

JSX-код:

          <input
                type = "checkbox"
                id = "checkbox-2"
                className = "checkbox__input"
            />
            <label
                htmlFor = "checkbox-2"
                className = "checkbox__label"
            />

Согласно документации, jsx-a11y/label-has-for устарел, и вам следует удалить это правило. В документации для jsx-a11y/label-has-associated-control есть раздел о том, как устранить эту ошибку: github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/…. Вы это читали?

Felix Kling 30.01.2019 18:56

Да, но никто не работал

CR7 30.01.2019 18:58

Пожалуйста, добавьте сообщение об ошибке в виде текста в вопрос, чтобы будущие пользователи могли его найти.

adiga 30.01.2019 18:59

@CR7 Пожалуйста, опубликуйте код JSX в виде текста, как оригинальный, так и с попыткой исправить.

Bergi 30.01.2019 19:04

Пожалуйста, опубликуйте свою конфигурацию для jsx-a11y/label-has-associated-control. Если это похоже на jsx-a11y/label-has-for, то я считаю, что проблема в том, что вы требуете, чтобы входные элементы были дочерними элементами их соответствующей метки (nesting). Если вы не хотите такого поведения, не включайте эту опцию (и вообще: ознакомьтесь с правилами/параметрами, которые вы включаете. Нет смысла их использовать, если вы не знаете, как решить проблему) .

Felix Kling 30.01.2019 19:11

Конечно, я хочу его отключить, но ошибка не исправлена, у меня нет связанного управления. Я пытаюсь отключить эту команду jsx-a11y/label-has-for:"off"

CR7 30.01.2019 19:16

На вашем скриншоте хорошо видно, что применяется правило jsx-a11y/label-has-associated-control, значит оно у вас так или иначе включено. В любом случае вы получаете сообщение об ошибке, потому что вы требуете, чтобы входные данные и метки были вложенными. и имеют идентификаторы. Но в вашем коде у них есть только ID, они не вложенные. Так что либо вложите их, либо удалите опцию.

Felix Kling 30.01.2019 19:29

@FelixKling, как я могу удалить опцию?

CR7 30.01.2019 19:32

Откройте файл правил eslint в текстовом редакторе, в строке "every": [ "nesting", "id" ] щелкните после запятой (,), чтобы поместить туда курсор, нажимайте клавишу возврата, пока вся часть "nesting", не будет удалена, затем сохраните файл.

Felix Kling 30.01.2019 19:33

@FelixKling не работает

CR7 30.01.2019 20:31
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
18
10
42 241
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Итак, прежде всего, для отключения этого правила мне нужно было написать это: "jsx-a11y/label-has-associated-control": "off",

тогда мне нужно отключить это: "jsx-a11y/label-has-for":"off",

И ведь мне нужно было переместить его вверх файла, потому что в моем случае, если я не переместил его вверх, мое правило не сработало.

Я считаю, что вместо «выключено» вы имеете в виду 0: «jsx-a11y/label-has-associated-control»: 0

J Woodchuck 16.07.2019 22:07

@JWoodchuck «off» и 0 имеют одинаковый эффект при переключении правил es-lint.

jeninja 08.09.2019 19:49

удаление правила не является решением

Matheus Ribeiro 23.12.2021 16:27

Случай 1: Вы можете вводить данные внутри метки

  <label>
      <input type = "text"/>
  </label>

случай 2: используйте htmlFor

   <label htmlFor = "first-name">
        First Name
   </label>
   <input type = "text" id = "first-name" />

вы можете ознакомиться с деталями правил на этой странице:

в моем коде мне пришлось объединить оба случая: 1) использовать ввод внутри метки и использовать htmlFor (он работает только с тегом без какого-либо атрибута)

brugobi 07.09.2021 17:55

только случай 2 работал для меня

ProGrammar 08.10.2021 20:18

Если вы хотите просто отключить это предупреждение, вы можете добавить специальный комментарий непосредственно перед строкой с меткой:

<input type = "text" id = "myinput" />
<>{ /* eslint-disable-next-line jsx-a11y/label-has-associated-control */ }</>
<label htmlFor = "myinput"></label>

Здесь вы можете найти много других встроенных комментариев ESLint для отключения правил: https://eslint.org/docs/user-guide/configuring#disabling-rules-with-inline-comments

Я решил это, добавив следующие строки в свой файл eslint.

{
    ....
    "rules": {
      "jsx-a11y/label-has-associated-control": ["error", {
        "required": {
          "some": ["nesting", "id"]
        }
      }],
      "jsx-a11y/label-has-for": ["error", {
        "required": {
          "some": ["nesting", "id"]
        }
      }]
    },
    ...
}

и don't forget to restart your local server после добавления этих строк.

это работает только тогда, когда label htmlFor(React) or for(HTML) и input id совпадают.

<label htmlFor = "temp-id">Label</label>
<input type = "text" id = "temp-id" />

https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/issues/302#issuecomment-425512505

Это не показывает ошибку, когда htmlFor и id не совпадают. Это вообще возможно?

Félix Paradis 26.05.2021 19:10

Другие вопросы по теме