Как проверить все входные данные, существующие на странице? - PullRequest
0 голосов
/ 02 августа 2020

Все входные данные со страницы

У меня есть эта html страница, которая создается динамически и содержит некоторые div. Каждый вопрос div (0,1,2, et c) содержит ввод, основанный на том, какой тип ответа выбрал пользователь. Я хочу проверить каждый ввод со страницы и:

Если значение одного типа ввода номер, текст, дата равно! = "" Alert ("что-то") иначе отправить значение в массиве; Если флажок / радио не установлен, alert ("что-то");

Я пробовал что-то вроде этого:

        let nrDiv = document.getElementsByClassName("div-question");
        let existInput = nrDiv[0].querySelector("input[type='text']");
        let numberInput = nrDiv[0].querySelector("input[type='number']");
        if (document.body.contains(existInput)) {
            for (let i=0; i < nrDiv.length ;i++) {
                let container = document.getElementsByClassName("div-questions" + i + "");
                let userInputAnswer = container[0].querySelector("input[type='text']");
                if (userInputAnswer.value == "") {
                    alert("Adaugati un raspuns!")
                    return;
                } 
                 if (userInputAnswer.value != ""){
                    let answer = {
                        question: questions[i].textQuestion,
                        answer: userInputAnswer.value
                    }
                    answers.push(answer);
                }
            }
        }

Работает, но если я приду с другим для l oop, для input type = "number" больше не работает. Я получаю значение null. Итак, если я приду с этим:

       if (document.body.contains(numberInput)) {
            for (let i=0; i < nrDiv.length ;i++) {
                let container = document.getElementsByClassName("div-questions" + i + "");
                let userInputAnswer = container.querySelector("input[type='number']");
                if (userInputAnswer.value == "") {
                    alert("Adaugati un raspuns!")
                    return;
                } 
                 if (userInputAnswer.value != ""){
                    let answer = {
                        question: questions[i].textQuestion,
                        answer: userInputAnswer.value
                    }
                    answers.push(answer);
                }
            }
        }

А для флажка и радиовходов я понятия не имею. Я хочу что-то вроде этого:

Если все входы не пусты и установлен хотя бы один флажок / радио, отправьте ответ и вопрос в массиве else alert ("error");

1 Ответ

1 голос
/ 02 августа 2020

Мне кажется, что это просто, если вы добавите атрибут required и / или pattern.

Это простой PO C:

<form action="">
  <input type="text" required>
  <input type="number" required>
  <input type="checkbox" required>
  <input type="radio" required>
  <input type="date" required>
  <button type="submit">Submit</button>
</form>

Обратите внимание, что когда вы нажимаете кнопку submit, выполняется нужная вам проверка, в данном случае != "".

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