Ответы пользователя по тегу HTML
  • Как записать пути к файлам в массив, которые были загружены через форму?

    @Merzley
    Перенесите session_start() в начало файла. Дело в том, что до вызова session_start() переменной $_SESSION вообще не существует. Поэтому выполнение функции save_file() всегда выглядит так:
    • Пустая ли переменная $_SESSION['files'] - всегда да, т.к. переменной $_SESSION не существует
    • запускаем сессию - появляется переменная $_SESSION, в которой есть элемент ['files'], хранящий данные из прошлого запроса
    • очищаем элемент ['files'] - стирается всё, что приходило в прошлых запросах
    • помещаем туда данные текущего запроса

    При последующих запросах всё повторяется, поэтому и получается, что в сессии только одна запись сохраняется
    Ответ написан
    3 комментария
  • Работа с selected в php где ошибка и как исправить?

    @Merzley
    Можно сделать так:
    В самом начале добавить массив (ID=>что-надо-подставлять) со всеми возможными вариантами

    $arDataSelectOptions = [
        1 => 'data-select-options="5,6,7,8,9,10"',
        5 => 'data-select-options="3,5,7"',
        10 => 'data-select-options="8,9,10"',
        ...
        'default' => 'data-select-options="1,2,3,4,5,6,7,8,9,10"'
    ];


    А затем строчку
    if($g['id'] == "1") { $usd = 'data-select-options="5,6,7,8,9,10"'; } else { $usd = 'data-select-options="1,2,3,4,5,6,7,8,9,10"'; }

    заменить на
    if(isset($arDataSelectOptions[intval($g['id'])]))
        $usd = $arDataSelectOptions[intval($g['id'])];
    else
        $usd = $arDataSelectOptions['default'];
    Ответ написан
    Комментировать
  • Как сделать валидацию поля формы типа Radio Javascript?

    @Merzley
    Radio-инпуты проверяются на "включенность" свойством "checked" DOM-элемента.

    Если совсем просто, придерживаясь текущей манере написания JS, функцию validateForm() дописываем до
    function validateForm() {
            // This function deals with validation of the form fields
            var x, y, i, valid = true;
            x = document.getElementsByClassName("tab");
            y = x[currentTab].getElementsByTagName("input");
    //         A loop that checks every input field in the current tab:
            for (i = 0; i < y.length; i++) {
    //             If a field is empty...
                if (y[i].value == "") {
                    // add an "invalid" class to the field:
                    y[i].className += " invalid";
                    // and set the current valid status to false
                    valid = false;
                }
            }
    
            y = x[currentTab].querySelectorAll('input[type="radio"]');
            if (y.length > 0) {
                var checked = false;
                for (i = 0; i < y.length; i++) {
                    if (y[i].checked) {
                        checked = true;
                        break;
                    }
                }
                if (!checked) {
                    /*
                        здесь добавть код, который применит
                        класс "invalid" для контейнера с radio-элементами
                     */
                    valid = false;
                }
            }
    
            // If the valid status is true, mark the step as finished and valid:
            if (valid) {
                document.getElementsByClassName("step")[currentTab].className += " finish";
            }
            return valid; // return the valid status
        }


    Единственное, надо учитывать, что radio-инпуты группируются по полю "name". В данном случае это обрабатывать не надо. Но если на одной вкладке окажется несколько групп radio-инпутов, то и проверять на "включенность" надо будет каждую группу отдельно.
    Ответ написан