Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> форма отправляется повторно, +1 при каждой ошибке ввода
arbuzmaster  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 720
Пользователь №: 37872
На форуме: 3 года, 4 месяца, 8 дней
Карма: 21




Помогите пожалуйста разобраться, есть вот такая функция

function create_scene(url){
$("#ajax-new-scene-form").submit(function(){
var str = $(this).serialize();
$.ajax( { type: "GET", url: "php/scenes/"+url, data: str, success: function(msg){
if(msg == 'OK') // Message Sent? Show the 'Thank You' message and hide the form
{ result = '<div class="notification_ok">Сценарий сохранен. Спасибо!<br> <a href="#" onclick="freset_1_wire();return false;">Создать еще один ?</a></div>'; $("#form_for_new_scene").hide();

}
else
{ result = msg; }
$("#note-new-scene-form").html(result);
// scroll
$('.scroll-pane-new-scene').jScrollPane({
showArrows: false,
verticalGutter: 10,
verticalDragMinHeight: 50,
verticalDragMaxHeight: 50
});
}
}
);
return false;
});
};

вызов функции и передача url происходит так

<form id="ajax-new-scene-form" action="javascript:alert('success!');">
тут всякие поля
<INPUT class="submit" type="submit" onclick="create_scene('one_wire_switch_url.php')" name="submit" value="submit">
</form>

если это поможет - форма генерируется в php и вставляется на сайт через ajax,

так вот проблема в том, что если форма проходит проверку с первого раза, то все нормально, а если не проходит, то при каждом нажатии на submit форма отправляется так - первое нажатие - 1 раз, второе 1+1, третье нажатие 2+1, четвертое нажатие 3+1., в итоге если при пятом нажатии форма прошла проверку, то форма отправляется 4+1=5 раз. Я не пойму в чем беда, уже все перепробовал, но ничего не получается, не знаю откуда этот счетчик появляется. Подскажите может есть какой то другой способ отправки формы с передачей параметра url

$(document).ready(function(){});
не получится,так как формы не существует на момент загрузки, она генерируется при нажатии на ссылку.


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Placido  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Наблюдаю
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1241
Пользователь №: 29445
На форуме: 5 лет, 3 месяца, 1 день
Карма: 143




В таком варианте при каждом клике по кнопке submit на форму вешается обработчик события onsubmit. То есть n кликов - n обработчиков.
Решение проблемы отсутствия формы на момент загрузки:
$(document).on('submit', '#ajax-new-scene-form', function() { var str = ... и т. д. })

http://api.jquery.com/on/#on-events-selector-data
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
 ۩     Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 720
Пользователь №: 37872
На форуме: 3 года, 4 месяца, 8 дней
Карма: 21





$(document).on('submit', '#ajax-new-scene-form', function() {

var str = $(this).serialize();
$.ajax( { type: "GET", url: "php/scenes/one_wire_switch_url.php", data: str, success: function(msg){
if(msg == 'OK') // Message Sent? Show the 'Thank You' message and hide the form
{ result = '<div class="notification_ok">Сценарий сохранен. Спасибо!<br> <a href="#" onclick="freset_1_wire();return false;">Создать еще один ?</a></div>'; $("#form_for_new_scene").hide();
}
else
{ result = msg; }
$("#note-new-scene-form").html(result);
// scroll
$('.scroll-pane-new-scene').jScrollPane({
showArrows: false,
verticalGutter: 10,
verticalDragMinHeight: 50,
verticalDragMaxHeight: 50
});
}
}
);
return false;
});

create.scenes.js:57 Uncaught TypeError: $(...).on is not a function


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 720
Пользователь №: 37872
На форуме: 3 года, 4 месяца, 8 дней
Карма: 21




Может есть способ, просто обнулять счетчик submit в конце функции?


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Placido  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Наблюдаю
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1241
Пользователь №: 29445
На форуме: 5 лет, 3 месяца, 1 день
Карма: 143




Цитата
create.scenes.js:57 Uncaught TypeError: $(...).on is not a function
- пора обновить версию jquery.

У старых версий jquery есть метод delegate:
$(document).delegate('#ajax-new-scene-form', 'submit', function(){...})

http://api.jquery.com/delegate/
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 720
Пользователь №: 37872
На форуме: 3 года, 4 месяца, 8 дней
Карма: 21




Цитата (Placido @ 13.05.2016 - 21:46)
Цитата
create.scenes.js:57 Uncaught TypeError: $(...).on is not a function
- пора обновить версию jquery.

У старых версий jquery есть метод delegate:
$(document).delegate('#ajax-new-scene-form', 'submit', function(){...})

http://api.jquery.com/delegate/

Не могу обновить, нужно тогда весь шаблон переделывать, пока на это времени нет!
Спасибо,так работает, а как теперь сделать, чтобы параметр url передавался сюда?


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 720
Пользователь №: 37872
На форуме: 3 года, 4 месяца, 8 дней
Карма: 21




Пока сделал через глобальную переменную

onclick="javasсript: url='one_wire_switch_url.php';"

может есть способ лучше?


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Placido  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Наблюдаю
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1241
Пользователь №: 29445
На форуме: 5 лет, 3 месяца, 1 день
Карма: 143




<form id="ajax-new-scene-form" data-url="one_wire_switch_url.php" ...

var str = ...,
url = $(this).attr('data-url'); ...
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
arbuzmaster  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 720
Пользователь №: 37872
На форуме: 3 года, 4 месяца, 8 дней
Карма: 21




Спасибо огромное, так действительно лучше! wink.gif


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса