Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.04.2014, 18:34
Аспирант
Отправить личное сообщение для aleksandr8i Посмотреть профиль Найти все сообщения от aleksandr8i
 
Регистрация: 16.06.2012
Сообщений: 44

Js путаются (при нажитии на один ипут выполняеться левый скрипт)
Привет друзья, помогите понять почему js путаются...

На странице несколько одинаковых скриптов есть вот так он выглядит:

var id_form = 'zakazat-paket';
        var success_msg = '<p>Ваша заявка отправлена</p>';
        function send_widget_form(i){
            $(i).attr('value','Загрузка');
            $.ajax({
                url : $('#'+id_form).attr('action'),
                    type: $('#' + id_form).attr('method'),
                    data: $('#' + id_form).serialize(),
                    success: function(data)
                    {
                        data = $(data).find('.result').text();
                        if (data === success_msg)
                        {
                            $('.result').addClass('good');
                        }
                        else
                        {
                            $('.result').removeClass('good');
                        }
                        $('.result').html(data);
                        $('#btn_send_ajax').attr('value', 'Отправить');
                    }
                });
                return false;
            }

И есть кнопка (инпут) при нажатии по которой выполняется скрипт вот она -
<input id="btn_send_ajax" class="orange_button" type="button" value="Отправить" onclick="send_widget_form($(this));"></input>


Так вот на странице таких скриптов около 5 штук почему-то при нажатии на на на инпут который принадлежит одному скрипту, выполняется другой скрипт, точно такой как вверху только с другим id у Form!?

Как можно сделать что бы при нажатии на инпут выполнялся именно тот скрипт который нужен?
Объясните почему так происходит?
Ответить с цитированием
  #2 (permalink)  
Старый 03.04.2014, 09:58
Новичок на форуме
Отправить личное сообщение для Elitemaster Посмотреть профиль Найти все сообщения от Elitemaster
 
Регистрация: 03.04.2014
Сообщений: 2

Приведите, пожалуйста, пример другого скрипта. Может id button путает или сами функции.
Ответить с цитированием
  #3 (permalink)  
Старый 03.04.2014, 11:50
Аспирант
Отправить личное сообщение для aleksandr8i Посмотреть профиль Найти все сообщения от aleksandr8i
 
Регистрация: 16.06.2012
Сообщений: 44

Клик то идет по функции
onclick="send_widget_form($(this));"

Функция send_widget_form во всех инпутах и скриптах одна и таже. Вроде как this должен указывать какой скрипт должен отработать, почитав стати на сайте понял это, но правильно ли я понял... игрался с this делал так
onclick="send_widget_form($(this))"
потом
onclick="send_widget_form(this);
и еще так
onclick="send_widget_form($(this.id));
вроде как последний вариант правильный но он не отрабатывает скрипт.. не знаю даже ) трудно мне даются эти скрипты.
Ответить с цитированием
  #4 (permalink)  
Старый 03.04.2014, 17:20
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от aleksandr8i Посмотреть сообщение
Так вот на странице таких скриптов около 5 штук почему-то при нажатии на на на инпут который принадлежит одному скрипту, выполняется другой скрипт, точно такой как вверху только с другим id у Form!?
Этот код что ли продублирован на странице в нескольких местах?
Ответить с цитированием
  #5 (permalink)  
Старый 03.04.2014, 17:31
Аспирант
Отправить личное сообщение для aleksandr8i Посмотреть профиль Найти все сообщения от aleksandr8i
 
Регистрация: 16.06.2012
Сообщений: 44

Сообщение от jsnb Посмотреть сообщение
Этот код что ли продублирован на странице в нескольких местах?
Да, но только значение(zakazat-paket) у var id_form = 'zakazat-paket'; разные т.е они соответствуют страницам куда нужно отсылать запрос.

и у form action=тоже разные
Ответить с цитированием
  #6 (permalink)  
Старый 03.04.2014, 17:45
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Мда... В общем, убираете все дубликаты кода оставляя только один экземпляр. id формы передаете как аргумент функции или определяете по свойству form у инпута. В общем, что-то типо этого:
var success_msg = '<p>Ваша заявка отправлена</p>';
function send_widget_form(i) {
  var id_form = i.form.id;
  $(i).attr('value', 'Загрузка');
  $.ajax({
    url: $('#' + id_form).attr('action'),
    type: $('#' + id_form).attr('method'),
    data: $('#' + id_form).serialize(),
    success: function (data) {
      data = $(data).find('.result').text();
      if (data === success_msg) {
        $('.result').addClass('good');
      } else {
        $('.result').removeClass('good');
      }
      $('.result').html(data);
      $('#btn_send_ajax').attr('value', 'Отправить');
    }
  });
  return false;
}

А в onclick инпутов писать так:
onclick="send_widget_form(this);"

Последний раз редактировалось jsnb, 03.04.2014 в 18:10.
Ответить с цитированием
  #7 (permalink)  
Старый 03.04.2014, 18:38
Аспирант
Отправить личное сообщение для aleksandr8i Посмотреть профиль Найти все сообщения от aleksandr8i
 
Регистрация: 16.06.2012
Сообщений: 44

Плюсик в карму вам ) еще раз спасибо большое все работает )
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не запускается скрипт JS vandy3 AJAX и COMET 3 07.12.2010 09:43