Перейти к содержимому


Защита На Кнопку "оформить Заказ" От Дублирования Заказа


  • Авторизуйтесь для ответа в теме
В этой теме нет ответов

#1 Mr.Nito

Mr.Nito

    Активный участник

  • Модераторы
  • 1 364 сообщений

Отправлено 24 Декабрь 2020 - 16:51

в main.js заменить
// Валидация формы на странице оформления заказа
$("#quickform").submit(function(){
// Если форма невалидна не отправляем её на сервер
if(!$(this).valid()) {
	 return false;
}
// Получаем данные формы, которые будем отправлять на сервер
var formData = $(this).serializeArray();
// Сообщаем серверу, что мы пришли через ajax запрос
formData.push({name: 'ajax_q', value: 1});
// Аяксом добавляем товар в корзину и вызываем форму быстрого заказа товара
$.ajax({
	 type : "POST",
	 dataType: 'json',
	 cache : false,
	 url	 : $(this).attr('action'),
	 data : formData,
	 success: function(data) {
	 // Если заказ был успешно создан
	 if( data.status == 'ok' ) {
		 window.location = data.location;
	 } else if( data.status == 'error' ) {
		 alert(data.message);
	 } else {
		 alert('Во время оформления заказа возникла неизвестная ошибка. Пожалуйста, обратитесь в службу технической поддержки.');
	 }
	 }
});
return false;	
}).validate();
на
// Валидация формы на странице оформления заказа
$("#quickform").submit(function(){
// Если форма невалидна не отправляем её на сервер
if(!$(this).valid()) {
	 return false;
}
// Получаем данные формы, которые будем отправлять на сервер
var formData = $(this).serializeArray();
// Сообщаем серверу, что мы пришли через ajax запрос
formData.push({name: 'ajax_q', value: 1});
var $btn = $("#quickform").find('button[type="submit"]')
// Аяксом добавляем товар в корзину и вызываем форму быстрого заказа товара
$.ajax({
	 type : "POST",
	 dataType: 'json',
	 cache : false,
	 url	 : $(this).attr('action'),
	 data : formData,
	 timeout: 3000,
	 beforeSend: function() {
	 $btn.addClass('disabled').html('Оформляется')
	 },	
	 success: function(data) {
	 // Если заказ был успешно создан
	 if( data.status == 'ok' ) {
		 window.location = data.location;
	 } else if( data.status == 'error' ) {
		 alert(data.message);
		 $btn.removeClass('disabled').html('Оформить заказ')
	 } else {
		 alert('Во время оформления заказа возникла неизвестная ошибка. Пожалуйста, обратитесь в службу технической поддержки.');
	 }
	 },
	 error: function() {
	 $btn.removeClass('disabled').html('Оформить заказ')
	 }
});
return false;	
}).validate();

в main.css добавить строку
.button.disabled {opacity: 0.7;cursor: default; pointer-events: none;}





Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных