Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 03.10.2019, 14:01
Аспирант
Отправить личное сообщение для frost68 Посмотреть профиль Найти все сообщения от frost68
 
Регистрация: 10.11.2017
Сообщений: 33

$(document).ready(function () {
    $("#firstform").submit(function (e) {
        e.preventDefault();
        // Получение ID формы
        var formID = $(this).attr('id');

        // Добавление решётки к имени ID
        var formNm = $('#' + formID);
        $.ajax({
            type: "POST",
            url: 'modalform/mail.php',
            data: formNm.serialize(),
            success: function (data) {
              // Вывод сообщения об успешной отправке
              $('.msgs').html(data);
              $('.formTitle').css("display","none");
              $(formNm).css("display","none");
              setTimeout(function(){
                $(formNm).css("display","block");
                $('.formTitle').css("display","block");
                $('.msgs').html('');
                $('input').not(':input[type=submit], :input[type=hidden]').val('');
              }, 3000);
            },
            error: function (jqXHR, text, error) {
                // Вывод сообщения об ошибке отправки
                $('.msgs').html(error);
                $('.formTitle').css("display","none");
                $(formNm).css("display","none");
                setTimeout(function(){
                  $(formNm).css("display","block");
                  $('.formTitle').css("display","block");
                  $('.msgs').html('');
                  $('input').not(':input[type=submit], :input[type=hidden]').val('');
                }, 3000);
            }
        });
        return false;
    });
    //для стилей формы
      var $input = $('.form-fieldset > input');
      $input.blur(function (e) {
        $(this).toggleClass('filled', !!$(this).val());
      });
});
Ответить с цитированием
  #12 (permalink)  
Старый 03.10.2019, 14:02
Аспирант
Отправить личное сообщение для frost68 Посмотреть профиль Найти все сообщения от frost68
 
Регистрация: 10.11.2017
Сообщений: 33

Так? Если я верно сделал, то не работает
Ответить с цитированием
  #13 (permalink)  
Старый 03.10.2019, 14:06
Аспирант
Отправить личное сообщение для frost68 Посмотреть профиль Найти все сообщения от frost68
 
Регистрация: 10.11.2017
Сообщений: 33

Сообщение от laimas Посмотреть сообщение
А нафига они вообще нужны? Вы логику того что у вас с ними написано понимаете или нет?

var formID = $(this).attr('id'); - this, это форма источник, то есть так которая отправляется и проще так this.id. А значит $('#' + formID) это тоже самое что и $(this). К чему это бесполезная писанина?

А далее вы отсылаете запросы от всех своих форм на один адрес. И о каком типе разном речь, методе, так он у вас жестко указан type: "POST".

У вас много ошибок как на клиенте, так и на сервере. К примеру, вот это пустяк if(empty($_POST['uname']) ..., но баг весьма неприятный, так как достаточно передать на сервер просто один пробел, и поле будет считаться не пустым.

Если вам сложно разобраться, то сделайте два разных обработчика, то есть не $("form").submit(function ..., а $("ID формы связи").submit(function () ... и $("ID формы поиска").submit(function () ... где и действуйте согласно задачам. Вот только нужно отменять действие по умолчанию (отправление формы естественным образом) таким образом в обработчиках:

....submit(function (e) {
e.prevetDefault();
....

PS. Пропустил return false;, это тоже самое что e.prevetDefault();, так что тут все норм.
Я здесь ошибся, не type а method, думал к этому можно привязаться
Ответить с цитированием
  #14 (permalink)  
Старый 03.10.2019, 14:20
Аспирант
Отправить личное сообщение для frost68 Посмотреть профиль Найти все сообщения от frost68
 
Регистрация: 10.11.2017
Сообщений: 33

Вот код для поиска и для формы
//ajax форма
$(document).ready(function () {
    $("#firstform").on('submit', function(){
        // Получение ID формы
        var formID = $(this).attr('id');

        // Добавление решётки к имени ID
        var formNm = $('#' + formID);
        $.ajax({
            type: "POST",
            url: 'modalform/mail.php',
            data: formNm.serialize(),
            success: function (data) {
              // Вывод сообщения об успешной отправке
              $('.msgs').html(data);
              $('.formTitle').css("display","none");
              $(formNm).css("display","none");
              setTimeout(function(){
                $(formNm).css("display","block");
                $('.formTitle').css("display","block");
                $('.msgs').html('');
                $('input').not(':input[type=submit], :input[type=hidden]').val('');
              }, 3000);
            },
            error: function (jqXHR, text, error) {
                // Вывод сообщения об ошибке отправки
                $('.msgs').html(error);
                $('.formTitle').css("display","none");
                $(formNm).css("display","none");
                setTimeout(function(){
                  $(formNm).css("display","block");
                  $('.formTitle').css("display","block");
                  $('.msgs').html('');
                  $('input').not(':input[type=submit], :input[type=hidden]').val('');
                }, 3000);
            }
        });
        return false;
    });
    //для стилей формы
      var $input = $('.form-fieldset > input');
      $input.blur(function (e) {
        $(this).toggleClass('filled', !!$(this).val());
      });
});

    // Ajax поиск
    $("#search").on('input', function() {
        var words = $(this).val();
        if (words.length > 2) {
            $.ajax({
                type: "POST",
                url: ROOT_PATH + "/search/",
                data: {
                    words: escape(words + ' ' + auto_layout_keyboard(words)),
                    set: 2,
                    ajax: true
                },
                success: function(data)
                {

                    // Результат поиска
                    if (data != 'false') {

                        if (data != $("#search").attr('data-content')) {
                            $("#search").attr('data-content', data);

                            $("#search").popover('show');
                        }
                    } else
                        $("#search").popover('hide');
                }
            });
        }
        else {
            $("#search").attr('data-content', '');
            $("#search").popover('hide');
        }
    });
Ответить с цитированием
  #15 (permalink)  
Старый 03.10.2019, 14:23
Аспирант
Отправить личное сообщение для frost68 Посмотреть профиль Найти все сообщения от frost68
 
Регистрация: 10.11.2017
Сообщений: 33

Сообщение от laimas Посмотреть сообщение
Если же форма поиска отправляется не AJAX, то у вас будет всего один обработчик для формы связи как $("ID формы связи").submit(function (e) ... и мешать форме поиска он не будет. В обработчике форма как JQ объект это $(this), а "магию" с ID из кода выбросить.
Поиск Ajax
Ответить с цитированием
  #16 (permalink)  
Старый 03.10.2019, 14:34
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

В запросе формы поиска тоже нужно запрещать действие по умолчанию, то есть либо return false;, либо как писал выше.
Ответить с цитированием
  #17 (permalink)  
Старый 03.10.2019, 14:43
Аспирант
Отправить личное сообщение для frost68 Посмотреть профиль Найти все сообщения от frost68
 
Регистрация: 10.11.2017
Сообщений: 33

laimas,
Вот так сделал, поиск работает форма нет
//ajax форма
$(document).ready(function () {
     $("#firstform").submit(function(){
        // Получение ID формы
        var formID = $(this).attr('id');

        // Добавление решётки к имени ID
        var formNm = $('#' + formID);
        $.ajax({
            type: "POST",
            url: 'modalform/mail.php',
            data: formNm.serialize(),
            success: function (data) {
              // Вывод сообщения об успешной отправке
              $('.msgs').html(data);
              $('.formTitle').css("display","none");
              $(formNm).css("display","none");
              setTimeout(function(){
                $(formNm).css("display","block");
                $('.formTitle').css("display","block");
                $('.msgs').html('');
                $('input').not(':input[type=submit], :input[type=hidden]').val('');
              }, 3000);
            },
            error: function (jqXHR, text, error) {
                // Вывод сообщения об ошибке отправки
                $('.msgs').html(error);
                $('.formTitle').css("display","none");
                $(formNm).css("display","none");
                setTimeout(function(){
                  $(formNm).css("display","block");
                  $('.formTitle').css("display","block");
                  $('.msgs').html('');
                  $('input').not(':input[type=submit], :input[type=hidden]').val('');
                }, 3000);
            }
        });
        return false;
    });
    //для стилей формы
      var $input = $('.form-fieldset > input');
      $input.blur(function (e) {
        $(this).toggleClass('filled', !!$(this).val());
      });
});

    // Ajax поиск
    $("#search").on('input', function() {
        var words = $(this).val();
        if (words.length > 2) {
            $.ajax({
                type: "POST",
                url: ROOT_PATH + "/search/",
                data: {
                    words: escape(words + ' ' + auto_layout_keyboard(words)),
                    set: 2,
                    ajax: true
                },
                success: function(data)
                {

                    // Результат поиска
                    if (data != 'false') {

                        if (data != $("#search").attr('data-content')) {
                            $("#search").attr('data-content', data);

                            $("#search").popover('show');
                        }
                    } else
                        $("#search").popover('hide');
                }
            });
        }
        else {
            $("#search").attr('data-content', '');
            $("#search").popover('hide');
        }
        return false;
    });
Ответить с цитированием
  #18 (permalink)  
Старый 03.10.2019, 15:01
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от frost68
форма нет
Сообщение от frost68
// Получение ID формы
        var formID = $(this).attr('id');
 
        // Добавление решётки к имени ID
        var formNm = $('#' + formID);
Это в помойку, я же писал выше.

$("#firstform").submit(function(){
        // Получение форму
        var form = $(this);

        $.ajax({
            type: "POST",
            url: 'modalform/mail.php',
            data: form.serialize(),
            success: function (data) {
              // Вывод сообщения об успешной отправке
              $('.msgs').html(data);
              $('.formTitle').hide();
              form.hide();
              setTimeout(function(){
                form.show();
                $('.formTitle').show();
                $('.msgs').html('');
                $('input').not(':input[type=submit], :input[type=hidden]').val('');
              }, 3000);
            },
            error: function (jqXHR, text, error) {
                // Вывод сообщения об ошибке отправки
                $('.msgs').html(error);
                $('.formTitle').hide(;
                form.hide();
                setTimeout(function(){
                  form.show();
                  $('.formTitle').show();
                  $('.msgs').html('');
                  $('input').not(':input[type=submit], :input[type=hidden]').val('');
                }, 3000);
            }
        });
        return false;
    });


Что именно не работает?

В форме поиска:

$("#search").on('input', function() {
        var f = $(this),  words = this.value.trim();
        if (words.length > 2) {
            $.ajax({
                type: "POST",
                url: ROOT_PATH + "/search/",
                data: {
                    words: escape(words + ' ' + auto_layout_keyboard(words)),
                    set: 2,
                    ajax: true
                },
                success: function(data)
                {
 
                    // Результат поиска
                    if (data != 'false') {
 
                        if (data != f.attr('data-content')) {
                            f.attr('data-content', data).popover('show');
                        }
                    } else f.popover('hide');
                }
            });
        }
        else f.attr('data-content', '').popover('hide');
        
        return false;
    });

Последний раз редактировалось laimas, 03.10.2019 в 15:04.
Ответить с цитированием
  #19 (permalink)  
Старый 03.10.2019, 15:05
Аспирант
Отправить личное сообщение для frost68 Посмотреть профиль Найти все сообщения от frost68
 
Регистрация: 10.11.2017
Сообщений: 33

laimas,
Вставил, то что вы прислали, поиск работает, форма нет
Ответить с цитированием
  #20 (permalink)  
Старый 03.10.2019, 15:52
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от frost68
поиск работает, форма нет
Если скрипт отправки формы находится в файле form.js, то проблема в нем, для него указан неверный путь, ошибка "файл не найден", статус 404.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
форма обратной связи maxg5 Общие вопросы Javascript 25 16.08.2016 20:18
Нужна помощь - форма обратной связи со скачиванием файла Baton1777 Общие вопросы Javascript 3 24.05.2015 02:21
Форма обратной связи Ajax soledar10@meta.ua AJAX и COMET 3 07.08.2013 14:54
ajax форма обратной связи anton-mgn AJAX и COMET 7 15.09.2011 20:42
Форма обратной связи на AJAX проблемы с модальным окном pavel87 AJAX и COMET 0 26.05.2011 14:30