@Tigronix

Где я допустил ошибку при проверке true/false инпутов?

Всем привет!
Задача: Если определенные элементы формы чекнуты, то кнопка "следующий шаг" становится активной. (Снимается disabled)
В моем понимании я это сделал и написал в коде, но на деле при проверке в консоли каждый раз мне выдает False. Хотя элемент чекнут и проверка тоже написана правильна... Где я допускаю ошибку?
Вот пример моего кода:
https://jsfiddle.net/7yd76nub/1/
  • Вопрос задан
  • 175 просмотров
Решения вопроса 1
isqua
@isqua
Научу HTML, CSS, JS, BEM и Git
Привет! Давайте разберём ваш код.

Во-первых, вы заполняете массив в самом начале:
// Создали массив
var stepSecond = [];
// Сохранили в него свойства checked разных объектов
stepSecond[1] = $('#firmware2').prop('checked');
stepSecond[2] = $('[name="stamping"]').prop('checked');
stepSecond[3] = $('#eyelet-color').prop('checked');
stepSecond[4] = $('[name="rubber-flat"]').prop('checked');

При изменении инпутов их состояния не попадут в массив автоматически.

Во-вторых, проверка $(stepSecond == 'true') очень странная. stepSecond — массив из 5 элементов (на нулевом месте у вас undefined, 1-4 элементы заполнены. Вы сравниваете его со строкой "true". Оператор сравнения == может вернуть либо true, либо false. В вашем случае массив stepSecond никогда не будет равен строке true. Так что сравнение всегда вернёт false. Значит ваше условие эквивалентно такому: $(false). Функция $ из jQuery создаёт jQuery-объект. Тогда ваше условие превращается в if (jQuery-объект), а значит всегда истинно.

Вот как можно было бы запрограммировать эту форму: https://jsfiddle.net/isqua/gge88ogL/2/

Вам нужно получить базовые знания о том, как работает JavaScript. Что такое переменные, функции, каких типов бывают данные и т.п.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
AppFA
@AppFA
Frontend developer at Yandex
Без обид, но тебе бы подучить JS для начала нужно немного, то что ты привел в коде - это откровенно говоря дичь. Что значит вот эта конструкция к примеру?:
if ($(stepSecond == 'true')) {..}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы