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, время: 15:14. |