• Как вывести JSON c одинаковыми ключами?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Отфильтровать по модели:
    auto.filter((v,i,a)=>a.find(e=>v.model==e.model)===v)

    Отфильтровать по детали:
    auto.filter((v,i,a)=>a.find(e=>v.detal==e.detal)===v)

    На выходе полноценный массив. Делайте дальше с ним, что хотите.
    Ответ написан
    Комментировать
  • Как остановить функцию Jquery?

    alexclear
    @alexclear
    A cat
    Наверное, как-то вот так?

    <script type="text/javascript">
    var already_scrolled = 0;
    $(document).ready(function(){ 
             $(window).scroll(function(){
    		if (already_scrolled == 0 && $(this).scrollTop() > 3000) {
                         already_scrolled = 1;
    		     $("#IndexNewCar").html("видео");
    		}
    	 }); 
    });
    </script>
    Ответ написан
    1 комментарий
  • Как мне применить код для каждой формы на сайте?

    xamd
    @xamd
    javascript-ninja
    Вот. Немного подправил код и зделал его jslint и jshint-free.
    Для его использования, добавьте класс js-form для всех форм, использующих этот сценарий, а так же js-phone для всех полей для ввода телефона.

    P.S. Катал на коленке, если не работает или есть вопросы - дайте знать, постараюсь помочь разобраться.

    $(document).ready(function() {
        "use strict";
    
        var form = $(".js-form");
    
        form.on("submit", function(e) {
            var submit = form.find(".js-submit");
    
            // Если Вам приходится генерировать HTML
            // или модифицировать какие-либо текстовые значения,
            // всегда лучше вынести их в константы
            var SEND = "Отправить заявку";
            var SENDING = "Идет отправка...";
            var SENDING_COMPLETE = "Заявка отправлена";
    
            function validatePhone() {
                var phone = form.find(".js-phone");
    
                try {
                    if (phone.val().length === 0) {
                        throw Error("Phone number can't be empty");
                    }
                } catch (e) {
                    phone.css({
                        "border-color": "#ff4500"
                    });
    
                    setTimeout(function() {
                        // Возвращаем значение цвета обводки в
                        // предыдущее состояние
                        phone.css({
                            "border-color": "auto"
                        });
                    }, 500);
    
                    return false;
                }
    
                return true;
            }
    
            if (validatePhone() === true) {
    
                var request = $.ajax({
                    url: "send.php",
                    method: "POST",
                    beforeSend: function() {
                        submit.attr({
                            "disabled": true,
                            "value": SENDING
                        });
                    }
                });
    
                request.done(function(response) {
                    response = $.trim(response);
    
                    if (response === "sent") {
                        submit.attr({
                            "value": SENDING_COMPLETE
                            // Возможно, здесь стоит убрать флаг disabled?
                        });
                    } else {
                        // По идее, если что-то идет не так, Ваш скрипт должен
                        // выкидывать исключение, которое вы бы обрабатывали в
                        // методе fail. Но пока вы этого не сделали, придется писать через
                        // if-else
                        submit.attr({
                            "disabled": false,
                            "value": SEND
                        });
                    }
                });
    
                request.fail(function(error) {
                    // Когда PHP скрипт будет выкидывать ошибку, вы будете обрабатывать её здесь.
                    console.error(error);
                });
            }
    
            // Предотвращаем стандартную обработку форму
            e.preventDefault();
        });
    });
    Ответ написан
    Комментировать
  • Как мне применить код для каждой формы на сайте?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    Забудь об атрибутах id. По стандарту каждый id на странице должен иметь уникальное значение. Хочешь несколько форм - меняй id на class, или data-id.

    Для атрибутов, не имеющих значений (существует / не существует) надо использовать не attr, а prop.

    В общем:

    $('.load_button').click(function (e) {
      e.preventDefault();
    
      var button = $(this),
          form = button.closest('form'),
    //    phone = form.find('[data-id="obligatorily"]'); // Это для data-id="obligatorily"
          phone = form.find('.obligatorily'); // Это для class="obligatorily"
    
      if (phone.val().length == 0) {
        phone.css('border-color', '#ff4500');
        setTimeout(function () {
          phone.removeAttr('style');
        }, 500);
        return;
      }
    
      button.prop('disabled', true).attr('value', 'Идет отправка...');
      $.post("send.php", form.serialize(), function (result) {
        var r = $.trim(result);
        if (r == 'sent') {
          button.attr('value', 'Заявка отправлена');
        } else {
          $('#load_button').prop('disabled', false).attr('value', "Отправить заявку");
        }
      });
    });

    И да, @Petroveg прав - надо отслеживать submit, а не click. Но это уже сам.
    Ответ написан
    Комментировать