Ответы пользователя по тегу Вёрстка
  • Как проверить форму в jquery?

    erge
    @erge
    Примус починяю
    В функцию обработки клика по кнопке
    $('.popup-button').on('click', function () {
        $('.popup-thanks').fadeIn(),
          $('.popup-callback').fadeOut();
      });


    вставить проверку обязательных полей формы.
    и выполнять блок
    $('.popup-thanks').fadeIn(),
          $('.popup-callback').fadeOut();

    только если заполнены обязательные поля.

    UPD:
    как-то так:
    $('.popup-button').on('click', function () {
        if (
            // проверка заполнения имени
            $(".popup-input-name").val().length > 1 &&
            // проверка корректного заполнения телефона
            /^\+?7[ -]?\(?\d{3}\)?[ -]?\d{3}[ -]?\d{2}[ -]?\d{2}$/.test( $(".popup-input-phone").val() ) &&
            // проверка корректного заполнения e-mail
            /^[a-z0-9\-\.]+@[a-z0-9\-\.]+\.[a-z]+$/i.test( $(".popup-input-mail").val() )
           ) {
            $('.popup-thanks').fadeIn(),
            $('.popup-callback').fadeOut();
        } else {
            alert ("Просьба корректно заполнить поля формы");
        }
      });


    PS: Вместо алерта можно вставить отображение модального окна с соответствующим текстом.
    Ответ написан
  • Как заставить реагировать объект?

    erge
    @erge
    Примус починяю
    пересечение / совпадение элементов определяется сопоставлением координат углов элементов.
    и решение(я) находятся поиском - javascript определить перекрытие элементов

    в итого можно написать объект checker с методами проверки collide и inside
    var checker = {
      // получить координаты углов объекта
    	getRectangle: function (el) {
        return {
          left: el.offsetLeft,
          top: el.offsetTop,
          right: el.offsetLeft + el.offsetWidth,
          bottom: el.offsetTop + el.offsetHeight
        }
      },
      // проверка на пересечение
      collide: function (el1, el2) {
        var rect1 = this.getRectangle(el1);
        var rect2 = this.getRectangle(el2);
        
        return !(
          rect1.top > rect2.bottom ||
          rect1.right < rect2.left ||
          rect1.bottom < rect2.top ||
          rect1.left > rect2.right
        );
      },
      // проверка на совпадение
      inside: function (el1, el2) {
        var rect1 = this.getRectangle(el1);
        var rect2 = this.getRectangle(el2);
    
        return (
          ((rect2.top <= rect1.top) && (rect1.top <= rect2.bottom)) &&
          ((rect2.top <= rect1.bottom) && (rect1.bottom <= rect2.bottom)) &&
          ((rect2.left <= rect1.left) && (rect1.left <= rect2.right)) &&
          ((rect2.left <= rect1.right) && (rect1.right <= rect2.right))
        );
      }
    }


    ниже все вместе + некоторые исправления:

    https://codepen.io/sazakharov/pen/LYPBmNM?editors=0010
    Ответ написан
    Комментировать
  • Что мешало консорциуму W3C и разработчикам браузеров сразу придумать css grid?

    erge
    @erge
    Примус починяю
    Время...
    Ответ написан
    Комментировать