Ответы пользователя по тегу JavaScript
  • Как скрытие и появление блока div?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Для инпута надо навесить ивент blur, который будет прятать блок. blur это ивент, который срабатывает когда элемент теряет фокус (то есть если был выделен инпут, и юзер кликнул не по инпуту, то сработает blur ивент).
    document.querySelector("#input").addEventListener("blur", function() {
      // спрятать блок
    }, false);
    Ответ написан
    3 комментария
  • Как постепенно выполнять действия, а потом всё повторять?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Варианта два:
    1) Добавлять ко всем блокам классы одновременно, и ставить для каждого класса свою задержку на transition. Пример:
    .block-1.active {transition: height %time%;}
    .block-2.active {transition: height %time% 500;}
    .block-3.active {transition: height %time% 900;}
    .block-4.active {transition: height %time% 1200;}
    /* как вариант, transition: %property% %time% можно задать для всех одно, а по отдельности менять только свойство transition-delay, если вам так удобнее будет */

    Если вам при снятии класса требуется, чтобы анимация всех блоков произошла одновременно, то для их общего класса (ну или для каждого по отдельности) пишите просто что-нибудь такое:
    .block {transition: height %time% 0;}
    В итоге если класс active у блока есть, его анимация стартует с задержкой (первая после свойства это время исполнения, а вторая это задержка). Если класса .active нету, то и задержки не будет.
    2) Второй вариант предполагает использование setTimeout(){function() {%действие%}, %delay%) для каждого действия с делеем. Если положить таймаут внутрь другого, то его время сложится с родителем (то есть его таймаут стартнет только когда "выстрелит" таймаут родителя).

    Ну и для цикличности все это дело надо просто упаковать в setInterval.
    Ответ написан
    5 комментариев
  • Отправка сообщения с инпута после нажатия enter?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Оба инпута должны лежать внутри формы. Задаешь форме id или class и пишешь что-нибудь такое
    $(".formClass").on("submit", function() {
      // действия
      return false; // отменяет перезагрузку страницы при стандартном поведении формы
    });
    Ответ написан
    Комментировать
  • Как сделать двухстороннюю кнопку?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Вот простой и доступный гайд davidwalsh.name/css-flip (и живой пример davidwalsh.name/demo/css-flip.php)
    Если вы не можете в английский, то схема такова:
    1) Создаете элемент, в которой кладете 2 элемента, один будет лицом, другой "задом". Лицо просто встает как есть, а задняя сторона ставится с помощью с помощью position: absolute; top: 0; left: 0;
    Обоим элементам задается 100% длины и высоты, backface-visibility: hidden и transition: transform %time%s;
    2) Задней стороне даем transform: rotateY(180deg);
    3) Назначаем на :hover родителя переворот обоих элементов по оси Y на -180 градусов. То есть передняя сторона станет transform: rotateY(-180deg); а задняя 0deg
    4) И в конце добавляем родительскому элементу perspective: %число% (например 1000) для создания эффекта объема.
    codepen.io/suez/pen/696e4a5351f1bf1428cc9e0e17285b... - примитивная демка на кодпене.
    Ответ написан
    Комментировать
  • Angularjs. Как убрать валидационные (ng-dirty, ng-invalid etc.) классы после предыдущей валидации без обхода всех инпутов?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Метод $setPristine() применяемый для формы должен убирать все ng-dirty и прочие вещи. Он по сути дела "очищает" форму.
    https://docs.angularjs.org/api/ng/type/form.FormCo...
    Ответ написан
    1 комментарий
  • Как отследить изменение поля (input), если оно изменено с помощью Jquery Slider UI?

    Ronnie_Gardocki
    @Ronnie_Gardocki
    Я у мамы фронтендщик.
    Ух, чет я давно не купался в таком жутком коде :)
    К сожалению на рефакторинг этого чуда у меня сил не хватило, так что вот что получилось в итоге:
    jsfiddle.net/ckntr2jy/1
    В общем я допилил логику работы двух методов слайдера
    slide: function( event, ui ) {
      $( "#slider-result" ).html( ui.value );
      $('#area').val(ui.value).trigger("change");  // тут добавлен триггер change ивента
    },
    change: function(event, ui) { 
      $('#area').val(ui.value).trigger("change");
    }

    Теперь при слайдинге в реалтайме меняются циферки, а не только когда отпускаешь слайдер.
    Совет: изучи синтаксис jQuery и посмотри чужой код. Такое ощущение что это экземпляр из 2008 года.
    Ответ написан
    7 комментариев