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!? Как можно сделать что бы при нажатии на инпут выполнялся именно тот скрипт который нужен? Объясните почему так происходит? |
Приведите, пожалуйста, пример другого скрипта. Может id button путает или сами функции.
|
Клик то идет по функции
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));вроде как последний вариант правильный но он не отрабатывает скрипт.. не знаю даже ) трудно мне даются эти скрипты. |
Цитата:
|
Цитата:
и у form action=тоже разные |
Мда... В общем, убираете все дубликаты кода оставляя только один экземпляр. 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);" |
Плюсик в карму вам ) еще раз спасибо большое все работает )
|
Часовой пояс GMT +3, время: 19:31. |