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

    GM2mars
    @GM2mars
    Блок с картинкой с position: relative при клике на блок, получаем координаты мыши относительно блока, в этом месте выводим форму с position: absolute и выравниваем по координатам мыши. После добавления комментария скрываем форму, и на это место так же абсолютно с заданными координатами ставим блок-картинку, при клике на которой выводим коммент. В базу сохраняется примерно так: id картинки, id комментария, координаты X, координаты Y. В другую таблицу пишем сам комментарий: id комментария, id картинки. И где то ещё таблица с картинками: id картинки, src картинки.

    Готового решения не знаю, но реализовать не сложно.
    Ответ написан
    Комментировать
  • Может ли в jq одинаковое событие вешаться несколько раз?

    GM2mars
    @GM2mars
    Очень часто встречался с такой проблемой, пока ничего лучше не нашел как перед каждой привязкой к событию делать отвязку от него:

    $(document).off('click', '.element');
    $(document).on('click', '.element', function() {
      alert('ta-da!');
    });
    Ответ написан
  • Как один раз привязать событие в одностраничном приложении?

    GM2mars
    @GM2mars Автор вопроса
    Спасибо за ответы, видимо нет простого способа стандартными средствами библиотеки, решить данную проблему.
    Не люблю фреймворки, использую только в крайней необходимости, а только ради одной функции и подавно не вижу в них смысла.
    Тогда придется использовать (отвязка - привязка).
    Ответ написан
  • Как сделать на JS суммирование цены?

    GM2mars
    @GM2mars
    Если в js полный ноль и не хотите разбираться, то вам на фриланс биржу, а если хотите сами то:
    (пример на jQuery, но можно все так же сделать на чистом js)

    function sumSel() {
      var sel=[],
        sum=0;
      sel[1]=$('.sel1').val();
      sel[2]=$('.sel2').val();
      sel[3]=$('.sel3').val();
      for (var key in sel) sum+=parseInt(sel[key]);
      return sum;
    }
    $(document).on('change', 'select', function() {
      alert(sumSel());
    })

    Не проверял, но вроде все правильно. Алгоритм простой: создаем функцию где объявляем переменные, массив для селектов и сумму. Присваиваем к массиву значения селектов, обходим в цикле массив суммируя значения, и отдаем сумму.
    Ниже привязываем функцию к событию выбора селектов.
    Это конечно не перфект код, а то как можно быстро решить вашу задачу.
    Ответ написан
    Комментировать
  • Валидация формы (обязательные поля)

    GM2mars
    @GM2mars
    на jquery с обрезкой пробелов
    if (!$.trim($('input[name=email]').val()).length && !$.trim($('input[name=tel1]').val()).length) {
    console.log("Пожалуйста заполните, 'email' или 'telephone'")
    }
    Ответ написан
    3 комментария
  • Условие выборки PDO MySQL из $.ajax?

    GM2mars
    @GM2mars Автор вопроса
    Это самописный движок.
    В $config приходит все правильные значения.
    Это от сервера: Array ( [start] => 0 [count] => 50 [order_by] => id [category] => 0 [ajax] => )
    Это от клиента: Array ( [start] => 50 [count] => 50 [order_by] => id [category] => 1 [ajax] => true [action] => getArticles )
    При:
    public function getLinks($json, $config) {
    	if (!$config) $config=$this->default_config;
    	print_r($config);
    	...
    Ответ написан
  • Где правильно выполнять бизнес-логику веб-приложения?

    GM2mars
    @GM2mars
    Если я вас правильно понял, то во втором варианте промежуточные данные лучше хранить в куках. Например создать объект со свойствами вычислений, и перекодировать его в json строку и засунуть её в куку. когда приходит запрос от клиента, то достаем куку, делаем вычисления, и результат опять в json -> кука.
    Ответ написан
    Комментировать
  • Ajax или Angular фильтрация?

    GM2mars
    @GM2mars
    Записывай: (AngularJS)
    var value=5;
    $http({method: 'POST', url: server_side.php?action=get_item, data: value}).success(function(res) {
      $scope.items=res;
    }).error(function(res) {
      alert("Ошибка");
    });

    Посылаем "ангуляровский запрос" на сервер. method - тип запроса (get, post), url - страница для обработки запроса с каким нибудь параметром. Если это post, то в теле передаем значение. Функция возвращает res переменную (имя любое) в которой ответ от сервера. Мы обрабатываем ответ как нам нужно. В случае неудачного ответа показываем ошибку.

    Если хочешь сделать поиск в реалтайме, то алгоритм такой:
    При нажатии клавиши в поле ввода, берем значение этого поля и отправляем на сервер, методом указанным выше. На сервере отлавливаем этот запрос, обрабатываем его (например ищем в базе названия по пришедшему значению) и выводим ответ обычным echo, заранее переведя его в удобный вид (или готовый html кусок или json строка)
    Ну а на клиенте соответственно у нас должна быть подготовленная функция для обработки ответа, например формирование списка найденного.
    При реалтайм поиске советую начинать поиск (отправлять запросы на сервер) от 3-х символов, ну и через 1 секунду после нажатия клавиши.
    Ответ написан
    1 комментарий
  • Генерация html c данными на стороне сервера либо получение данных при помощи ajax?

    GM2mars
    @GM2mars
    Второй способ более правильный. Тем более что вы используете AngulaJS. При заходе на страничку (или шаблон) в контроллере запрашиваете данные. Лучше чтоб они приходили json строкой. При удачном ответе (когда данные пришли без ошибок) передаем ответ в какой нибудь $scope который парсится шаблоном. Все средства у Ангуляра для этого есть.
    Выглядит примерно так:

    Контроллер:
    $http({method: 'GET', url: url+'/api/?action=get_res'}).success(function(res) {
      $scope.data=res;
    }).error(function(res) {
      alert("error");
    });

    Шаблон:
    <ul class="records_list">
      <li ng-repeat="item in data" ng-class="{important:item.important==1}">
        <span>{{item.name}}</span>
          <input type="checkbox" data-id="{{$index}}" data-uid="{{item.id}}">
      </li>
    </ul>
    Ответ написан
  • Как передавать $scope.var между контроллерами?

    GM2mars
    @GM2mars
    Через глобальную область видимости $rootScope:

    app.controller('oneCtrl', ['$scope','$rootScope', function($scope, $rootScope) {
       $rootScope.var=1;
    }]);
    
    app.controller('twoCtrl', ['$scope','$rootScope', function($scope, $rootScope) {
       console.log($rootScope.var);     //1
    }]);
    Ответ написан
  • Что сделать для ускорения логики реализованной на jQuery?

    GM2mars
    @GM2mars
    Посмотрите в сторону AngularJS, манипуляции с DOM он делает шустрее, то что вам нужно, можно без проблем на нем реализовать. Меньше кода и больше скорость работы.
    Вот чтоб вам не искать angular.ru
    Ответ написан
  • Как реализуется легкопонятная дата поста/комментария?

    GM2mars
    @GM2mars
    Реализация на js, недавно писал, не совсем по вопросу, но из той же оперы:
    function slang(number, par) {
      var text;
      if (number>100) {
        return slang(number%100, par);
      }
      if (number>10 && number<15) {
        if (par=="d") text=" дней"; else if (par="z") text=" записей ";
        return text;
      } else {
        switch(number%10) {
          case 0:  case 5:  case 6:  case 7:  case 8:  case 9:
            if (par=="d") text=" дней"; else if (par="z") text=" записей ";
            return text;
          case 1:
            if (par=="d") text=" день"; else if (par="z") text=" запись ";
            return text;
          case 2:  case 3:  case 4:
            if (par=="d") text=" дня"; else if (par="z") text=" записи ";
            return text;
        }
      }
    }

    Принимает в качестве значений два параметра: (int) число и идентификатор слова (d - день, z - запись).

    Работает так:
    console.log("Выбрано 135 "+slang(135, "z")+" за 2"+ slang(2, "d"));

    Выведет: Выбрано 135 записей за 2 дня.
    Ответ написан
    Комментировать
  • Какую выбраль cms для создания сайтов и интернет магазинов под заказ?

    GM2mars
    @GM2mars
    Советую вместо CMS изучить лучше какой нибудь фреймворк, типа Yii и другие. И делать любые сайты с блекджеком и ... А не запариваться с этими cms, так как для магазина лучше одна, для портала лучше другая, для блога - третья.
    Ответ написан
    Комментировать