Ответы пользователя по тегу JavaScript
  • Почему получаю xhr.status 0?

    @Merzley
    check_advertising.php

    Случаем, на Мозилле не стоит AdBlock?
    Ответ написан
  • Какие элементы выпадающего списка видит пользователь?

    @Merzley
    Вся суть на самом деле сводится к вычислению координат текущего выделенного элемента списка и сравнению этого значения со значениями прокрутки контейнера.
    Накидал что-то похожее и постарался в комментариях объяснить что там происходит. https://jsfiddle.net/05dmtxz6/1/ Надеюсь, поможет.
    Ответ написан
  • Как раскрывать блок по ссылке с хешем на другой странице?

    @Merzley
    Можно сделать так:

    Каждому элементу .acc-head добавить data-атрибут с необходимым хешем. Например, data-hash="#block1"

    В скрипт добавить код, который будет читать текущий хеш, пришедший в URL, а затем "кликать" по нужному элементу.
    //Ищем элемент
    var selector = '[data-hash="'+window.location.hash+'"]';
    var jqElement = $(selector);
    //Проверяем, нашли то что нужно, или нет
    if (jqElement.length === 1){
        //Если нашли - кликаем
        jqElement.click();
    }

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

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

    При последующих запросах всё повторяется, поэтому и получается, что в сессии только одна запись сохраняется
    Ответ написан
    3 комментария
  • Как из input взять слова с помощью javascript?

    @Merzley
    //находим инпут
    let domInput = document.querySelector('селектор-который-найдет-нужный-инпут');
    //получаем строку, записанную в инпут
    let strInputText = domInput.value;
    //разбиваем строку на слова
    let arWords = strInputText.split(' ');
    
    //Сейчас в массиве arWords каждый элемент - отдельное слово из тех, что были в инпуте
    
    arWords.forEach(function (word) {
        alert(word);
    })
    Ответ написан
    Комментировать
  • Работа с 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'];
    Ответ написан
    Комментировать
  • Маркеры google map передвигаются при перемещений мышки, как это можно исправить?

    @Merzley
    У вас 2 раза создается объект "карта". В строке 149 (var mapOptions = ...) на самом деле создается объект не с опциями карты, а полностью готовая карта. Второй вызов new google.maps.Map(), да еще и с неадекватными опциями, как раз всё ломает.
    Исправленное будет выглядеть так:
    // store map locations list wrapper.
        var mapLocationsEl = $('.map-locations');
    
        // create a map object, and include the MapTypeId to add to the map type control.
        var map = new google.maps.Map(document.getElementById('map'), {
          center: {
            lat: 56.3010164,
            lng: 43.9399994
          },
          streetViewControl: 0,
          gestureHandling: 'cooperative',
          zoom: 12
        });
    
        // associate the styled map with the MapTypeId and set it to display.
        map.mapTypes.set('map_style', styledMap);
        map.setMapTypeId('map_style');
    Ответ написан
    2 комментария
  • Как сделать валидацию поля формы типа 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-инпутов, то и проверять на "включенность" надо будет каждую группу отдельно.
    Ответ написан