@Mirrrta

Как проверить, что ни один чекбокс не чекнут на странице?

У меня есть чекбоксы в форме, такая структура:

<form>
  <label>
    <input type=checkbox value='1' />
  </label>
  <label>
    <input type=checkbox value='2' />
  </label>
  <button type='submit'>
</form>

При сабмите проверяю данные через new FormData(e.currentTarget).
Как сделать так, чтобы кнопка сабмита была неактивной, если ни один чекбокс не чекнут, не сабмитя форму?
  • Вопрос задан
  • 144 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега React
const [ items, setItems ] = useState([
  { value: ..., text: '...', checked: false },
  { value: ..., text: '...', checked: false },
  ...
]);

const onChange = ({ target: { checked, dataset: { index } } }) => {
  setItems(items.map((n, i) => i === +index ? { ...n, checked } : n));
};

<form>
  {items.map((n, i) => (
    <div>
      <label>
        <input
          type="checkbox"
          data-index={i}
          value={n.value}
          checked={n.checked}
          onChange={onChange}
        />
        {n.text}
      </label>
    </div>
  ))}
  <button disabled={items.every(n => !n.checked)}>submit</button>
</form>

https://jsfiddle.net/ps6zt52a/
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
MifeeX
@MifeeX
Жабаскриптизер
попробуйте использовать Redux-form.
Ну и кнопку ставьте в false, а на чекбоксы вешайте обработчик событий. Если чекбокс чекнут, кнопка становится нормальной, в противном случае наоборот
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
06 мая 2024, в 09:38
1200 руб./в час
06 мая 2024, в 09:37
1200 руб./в час
06 мая 2024, в 09:36
8000 руб./за проект