• Почему метод вызывается 2 раза?

    Александр Яковлев, после выполнения @glide:run-after="canSwipe = true"

    который выполняется именно, что после всех подсчетов, у вас получается this.numActiveSlide += 2, вместо предполагаемого this.numActiveSlide += 1.
    А, так как настройки установлены на показ 1 слайда, получаем результат click -> показать следующий -> показать следующий
  • Как обновлять состояние по таймеру?

    Владимир, информация есть здесь, посмотрите описанные там примеры

    если нужно хранить в любой момент работы приложения, то смотрите в сторону Redux или mobX
  • Как обновлять состояние по таймеру?

    const Timer = () => {
        const [seconds, setSeconds] = useState(0);
        const [isActive, setIsActive] = useState(false);
    
        let toggle = () => {
            setIsActive(!isActive)
        }
    
        let reset = () => {
            setSeconds(0);
            setIsActive(false);
        }
    
        useEffect(() => {
            let interval = null;
            if (isActive) {
                interval = setInterval(() => {
                    setSeconds(seconds => seconds + 1);  // раз в секунду добавляет 1 секунду
                }, 1000);
            } else if (!isActive && seconds !== 0) {
                clearInterval(interval);
            }
            return () => clearInterval(interval);
        }, [isActive, seconds]);
    
        return (
            <div>
                <h1>{seconds}</h1>
                <button onClick={toggle}>{isActive ? 'Pause' : 'Start'}</button>
                <button onClick={reset}>Reset</button>
            </div>
        )
    }
    
    export default Timer;


    Дальше, я думаю вы сможете дополнить и/или модифицировать таймер под свои нужды
  • Не удается загрузить ссылочную сборку для выполнения .net framework?

    Причины возникновения смотрите тут.

    Скорее всего, проблема связана с недостатком компонентов/библиотек/прочего, требуемых для проекта

    PS: На будущее. Прикладывайте скриншот целиком, а не часть его, чтобы можно было рассмотреть ошибку полностью, и помочь с решением.
  • Как выделить в select2 определенные option?

    Добавить multiple не пробовали?

    <select class="js-example-templating" multiple="multiple">
      <optgroup label="Группа 1">
        <option value="AK">Alaska</option>
        <option value="HI">Hawaii</option>
      </optgroup>
      <optgroup label="Группа 2">
        <option value="CA">California</option>
        <option value="NV">Nevada</option>
        <option value="OR">Oregon</option>
        <option value="WA">Washington</option>
      </optgroup>
    </select>


    function formatState (state) {
        if (!state.id) {
            return state.text;
        }
        var baseUrl = "/user/pages/images/flags";
        var $state = $(
            `<span>
                <img src="${baseUrl}/${state.element.value.toLowerCase()}.png" class="img-flag" />
                ${state.text}
            </span>`);
        return $state;
    }
    
    $(document).ready(function() {
      $(".js-example-templating").select2({
        templateResult: formatState
      });
    });
  • Почему не всегда находит адрес по яндекс карте?

    Юлия Лис, есть вот такое решение:
    function init() {
        ....
        // добавляем в любом удобном месте внутри 
        suggestView.state.events.add('change', function () {
            var activeIndex = suggestView.state.get('activeIndex');
            if (typeof activeIndex == 'number') {
                activeItem = suggestView.state.get('items')[activeIndex];
            }
            if (activeItem && activeItem.value != searchAddress.value) {
                searchAddress.value = activeItem.value;
            }
        });
        ...
    });

    Только у него есть несколько проблем:
    1. Как только человек наведёт на любой элемент из выпадающего списка, содержимое input моментально меняется.
    2. Чтобы список закрылся, нужно будет ещё раз кликнуть по результату после прокладывания маршрута.

    Информация о работе функции:
    События suggestView (выпадающего списка)
    Как получить требуемое событие
  • Вывод товаров на сайте с сортировкой по удаленности от адреса покупателя?

    Реально.
    1. Создаёте переменную, в которой будете хранить адрес покупателя товара (let buyerAddress)
    2. Создаёте переменную, в которой будете хранить результат по дистанции (let distance)
    3. Создаёте массив объектов (let goodDistance)
    4. Прогоняете циклом адреса покупателей через API, получаете дистанции. которые добавляете в объект. Получаете на выходе:
    // в каждом distance будет храниться новое значение, которое вы получаете через API
    // в каждом buyerAddress будет храниться адрес покупателя
    goodDistance = [
     {good: "товар1", buyer: buyerAddress, range: distance},
     {good: "товар2", buyer: buyerAddress, range: distance}
     //... и тд
    ]

    5. Сортируете объект. Выводите результат
  • Почему не всегда находит адрес по яндекс карте?

    Юлия Лис, да можно сделать так.
    Может как то при клике на выпадающий список сначала записать в input а потом отдавать геокодеру?


    Немного переписал код, убрал alert, добавил обработку ошибки

    ymaps.ready(init);
    			function init() {
    				var startPlacemark, endPlacemark, multiRoute
    				let coord_start = ['71.406975', '51.089227'];
    				var DELIVERY_TARIFF = 100,
    					MINIMUM_COST = 200,
    					myMap = new ymaps.Map('map', {
    						center: coord_start,
    						zoom: 9,
    						controls: []
    					}),
    					zoomControl = new ymaps.control.ZoomControl({
    						options: {
    							size: 'small',
    							float: 'none',
    							position: {
    								bottom: 145,
    								right: 10
    							}
    						}
    					});
    
    				var suggestView = new ymaps.SuggestView('suggest', {
    					provider: {
    						suggest: (function(request, options) {
    							return ymaps.suggest("Нур-Султан," + request);
    
    						})
    					}
    				});
    
    				var searchControl = new ymaps.control.SearchControl({
    					options: {
    						provider: 'yandex#map',
    						noPlacemark: true
    					}
    				});
    				myMap.controls.add(searchControl);
    
    				startPlacemark = new ymaps.Placemark(coord_start, {
    					balloonContent: 'Кабанбай Батыра, 62',
    				}, {
    					hideIconOnBalloonOpen: false
    				});
    
    				searchControl.events.add('resultselect', function(e) {
    					var results = searchControl.getResultsArray();
    					var selected = searchControl.getSelectedIndex();
    					coord_end = results[selected].geometry.getCoordinates();
    
    					addRoute(coord_start, coord_end)
    				})
    
    				function createPlacemark(coords) {
    					return new ymaps.Placemark(coords, {
    						iconCaption: 'поиск...'
    					}, {
    						preset: 'islands#violetDotIconWithCaption',
    						draggable: false
    					});
    				}
    
    				myMap.events.add('click', function(e) {
    					let coord_end = e.get('coords');
    					addRoute(coord_start, coord_end)
    
    				});
    
    				function addEndPlacemark(coord_end) {
    					if (endPlacemark) endPlacemark.geometry.setCoordinates(end_coords);
    					else {
    						endPlacemark = createPlacemark(end_coords);
    						myMap.geoObjects.add(endPlacemark);
    					}
    					coord_end = endPlacemark.geometry.getCoordinates()
    					getAddress(coord_end);
    					myMap.geoObjects.add(endPlacemark);
    				}
    
    				function getAddress(coords) {
    					endPlacemark.properties.set('iconCaption', 'поиск...');
    					ymaps.geocode(coords).then(function(res) {
    						var firstGeoObject = res.geoObjects.get(0);
    
    						endPlacemark.properties
    							.set({
    								iconCaption: [
    									firstGeoObject.getLocalities().length ? firstGeoObject.getLocalities() : firstGeoObject.getAdministrativeAreas(),
    									firstGeoObject.getThoroughfare() || firstGeoObject.getPremise()
    								].filter(Boolean).join(', '),
    								balloonContent: firstGeoObject.getAddressLine()
    							});
    					});
    				}
    
    				function addRoute(coord_start, coord_end) {
    
    					if (multiRoute) multiRoute.model.setReferencePoints([coord_start, coord_end]);
    					else {
    						multiRoute = new ymaps.multiRouter.MultiRoute(
    							{
    								referencePoints: [
    									coord_start,
    									coord_end
    								],
    								params: {
    									results: 1
    								}
    							},
    							{
    								boundsAutoApply: true
    							}
    						);
    						myMap.geoObjects.add(multiRoute);
    					}
    
    					multiRoute.model.events.add('requestsuccess', function() {
    						let distance = multiRoute.getActiveRoute().properties.get("distance")
    						let distance_km = Math.round(distance.value / 1000)
    						let price = calculate(distance_km)
    					});
    
    				}
    
    				myMap.controls.add(zoomControl);
    				myMap.controls.add(searchControl);
    				myMap.geoObjects.add(startPlacemark);
    
    				function calculate(routeLength) {
    					return Math.max(routeLength * DELIVERY_TARIFF, MINIMUM_COST);
    				}
    
    				let searchAddress = document.getElementById('suggest');
    			
    				searchAddress.onchange = (e) => {
    					e.preventDefault();
    					let address = e.target.value.trim();
    					document.getElementById('suggest').value = address;
    					geocode(address);
    					console.log(address);
    				}
    
    				function geocode(address) {
    					var request = address
    					ymaps.geocode(request).then(
    						function(res) {
    							var obj = res.geoObjects.get(0), error, hint;
    							if (obj) {
    								switch (obj.properties.get('metaDataProperty.GeocoderMetaData.precision')) {
    									case 'exact':
    										break;
    									case 'number':
    									case 'near':
    									case 'range':
    										error = 'Неточный адрес, требуется уточнение';
    										hint = 'Уточните номер дома';
    										break;
    									case 'street':
    										error = 'Неполный адрес, требуется уточнение';
    										hint = 'Уточните номер дома';
    										break;
    									case 'other':
    									default:
    										error = 'Неточный адрес, требуется уточнение';
    										hint = 'Уточните адрес';
    								}
    							} else {
    								error = 'Адрес не найден';
    								hint = 'Уточните адрес';
    							}
    
    							if (error === 'Адрес не найден') showError(error)
    							else if (error === 'Неполный адрес') searchAddress.focus()
    							else {
    								coord_end = obj.geometry.getCoordinates()
    								addRoute(coord_start, coord_end)
    							}
    						},
    						function(e) {
    							console.log(e)
    						}
    					)
    				}
    
    				function showError(message) {
    					searchAddress.focus();
    					console.log(message);
    				}
    			}

  • Обратный отсчет с обновлением сообщения в embed?

    codepen, codesandbox или ему подобное, иначе тяжело понять суть проблемы
  • Не работает скрипт отправки данных на почту. Данные не вводятся, а выбираются. Почему не работает?

    keni019,

    <form method="post" action="...тут путь до PHP к примеру...">
      <div>
        <input type="radio" id="pavingStones1"
         name="pavingStones" value="brick">
        <label for="pavingStones1">Кирпич</label>
    
        <input type="radio" id="pavingStones2"
         name="pavingStones" value="brickwave">
        <label for="pavingStones2">Волна</label>
    
        <input type="radio" id="pavingStones3"
         name="pavingStones" value="trapeze">
        <label for="pavingStones3">Трапеция</label>
      </div>
      <div>
        <input type="radio" id="stoneColor1"
         name="stoneColor" value="black">
        <label for="stoneColor1">Черный</label>
    
        <input type="radio" id="stoneColor2"
         name="stoneColor" value="red">
        <label for="stoneColor2">Красный</label>
      </div>
      <div>
        <button type="submit">Заказать</button>
      </div>
    </form>


    Быстрый пример, который будет отправлять данные с типом брусчатки и её цветом.

    Вообще, рекомендую для самых новичком посмотреть видео, или научиться пользовать Google
  • Почему не всегда находит адрес по яндекс карте?

    Юлия Лис, а это уже связанно с тем, как работает API.
    Я вношу в строку "улица 108, 20", меня отправляет в Египет :)

    1. Если я копирую ваш запрос "Казахстан, Нур-Султан (Астана), улица 187, 20" и вставляю в поле ввода, то у меня нет лишних пробелов нигде, ошибок не возникает.
    2. Если ввести неполный адрес, к примеру "Казахстан, Нур-Султан (Астана), проспект Богенбай батыра", и выбрать из списка предложенных полностью схожий вариант, то он предлагает ввести уточнение (оно и понятно, так как адрес не точный)
    3. Если ввести конкретный, к примеру "Алматы, 13", то сразу находит требуемый адрес без ошибок

    4. Я заметил одну такую проблему, которая возникает в вашем codepen: если я получаю ошибку (alert), то после этого весь алгоритм перестаёт работать, и какой бы адрес я не ввёл, ничего не поменяется.

    UPD (решение проблемы на codepen).
    Непустое поле ввода всем виной. Решается:
    1. как только ввели неправильный адрес - сохранить его значение в переменную
    2. выдать вместо стоимости неправильный адрес
    3. выдать вместо дистанции текст ошибки
    4. очистить поле ввода присвоив пустую строку document.getElementById('suggest').value = "";

    после этого скрипт отрабатывал у меня во всех случаях:
    Ввожу неправильный адрес:
    Ошибка. Выдал адрес и текст вместо стоимости и дистанции. Ввожу правильный адрес - всё отлично рассчитал (смотрите следующий пункт)
    Нет ошибок. Показал стоимость и дистанцию, поставил метку, проложил маршрут.

    Ввожу другой адрес:
    Правильный - всё отлично
    Неправильный - см ошибка

    PS: не знаю, зачем придумали Alert, если из-за него всё может перестать работать :)
    PPS: 187 20 - может вызвать ошибку, так как для API это может быть воспринято не только как адрес, но и как координаты. Поэтому в подобных случаях необходимо выбирать в ручную из предложенных
    То есть, необходимо отдельно отработать каждый вид ошибок.

    PPPS: Если необходимо удалить лишний пробел из поисковой строки (для обычного пользователя), то
    let address = e.target.value.trim();
    document.getElementById('suggest').value = address;
    а уже потом исполнять geocode(address);
  • Отправка формы не работает через jquery?

    WebforSelf, потому, что HTML (DOM-дерево) должен обновиться (создать input с введенным value, удалить старый input, добавить новый input), иначе результата в структуре DOM-дерева вы не увидите.

    Dodo реализован с использованием React, что позволяет обновлять DOM-дерево "на лету".
  • Отправка формы не работает через jquery?

    WebforSelf, да, можете просто присваивать value к input, потом исполнять проверку на корректность (успешно - отправить форму, не успех - ничего не делать)
  • Как сбилдать отдельную часть приложения CRA?

    budda674, gulp можно внедрить хоть на 100%+ завершения :) всего лишь исчезнут react-scripts из package.json :)
    можно и оставить их, если необходимо. тогда ваш package.json будет:
    "scripts": {
        "start": "env-cmd -f .env.dev react-scripts start",
        "start--local": "env-cmd -f .env.localhost react-scripts start",
        "start--staging": "env-cmd -f .env.staging react-scripts start",
        "build--dev": "env-cmd -f .env.dev react-scripts build",
        "build--qa": "env-cmd -f .env.staging react-scripts build",
        "build--prod": "env-cmd -f .env.production react-scripts build",
        "test": "react-scripts test",
        "eject": "react-scripts eject",
        "compilePublic": "cross-env gulp compilePublicPages",
        "compilePrivate": "cross-env gulp compilePrivatePages",
        "compileAll": "cross-env gulp compileAll"
      }


    где ваши старые методы будут выполнять обычные команды (сборка всего приложения под разные условия) и дополнительные, которые будут собирать только то, что нужно (их можно дополнить исполнением react-scripts start или подобных ему методов) То есть, у вас будет больше свободы, чем та, что есть сейчас
  • Отправка формы не работает через jquery?

    WebforSelf, потому, что $('.good_code').click() должен выполнять функцию, а в вашем случае он выполняет ничего.
    то есть, ваш код в любом случае будет
    $('.good_code').click(function () {
      ${"form").submit(); // или тот id, что используется
    });


    так что, на вашем месте, я бы просто убрал кнопку, оставил сразу $("form").submit() и не мучался c излишними строками кода :)
  • Отправка формы не работает через jquery?

    Зачем вы выполняете операцию click на кнопке, которую не видно, если при успешном исполнении мы можете просто выполнить сразу $("form").submit() без создания кнопок отправки?

    $(function () {
      $(".inputs").keyup(function () {
        if (this.value.length === this.maxLength) {
          if ($(this).hasClass("code_4")) {
            $(this).blur();
            $("form").submit()
          } else {
            $(this).next(".inputs").focus();
          }
        }
      });
    });


    Логика от этого не поменяется. Зато выполняется во всех случаях успеха