Jump to content
  • 0

Блокировка действия


meta
 Share

Question

Всем добрый день.

Делаем интернет-магазин, на странице товара после добавления товара в корзину, появляется кнопка "перейти в корзину" с ссылкой на страницу с корзиной, но добавление срабатывает не сразу и возникает вероятность того что пользователь может кликнуть несколько раз по кнопке и тогда добавиться больше одного товара.

Подскажите как можно заблокировать кнопку после первого клика и возобновить её действие после того, как кнопка с ссылкой исчезнет?

Есть идея с помощью setInterval, задать через долю секунды отключение клика, потом его включить, после исчезновения кнопки с ссылкой.

Вот код:

function addToShoppingCart(productId) {
NopSolutions.NopCommerce.Web.Services.OrderService.addtoshoppingcard(productId, productAdded, productAddingError);
}

function productAdded(result) {
if (result.Error.length > 0) {
alert(result.Error);
}
else {
document.getElementById('miniShoppigCartLabel').innerHTML = result.ShoppingCartLabel;
updateButtons(result.ProductId, result.StockQnty);
showGoToBasketButton();
}
}

function productAddingError(result) {
alert(result.get_message());
}

function updateButtons(productId, qnty ) {
if (qnty <= 0) {
document.getElementById('btnAddToCart').style.display == "none";
document.getElementById('btnPreOrder').style.display = "block";
document.getElementById('pnlPreOrderMessage').style.display = "block";
}
}

function showGoToBasketButton() {
if (document.getElementById('GotoBasket').style.display == "none")
{ document.getElementById('GotoBasket').style.display = "block"; }
if (document.getElementById('buyMessage').style.display == "none") {
document.getElementById('buyMessage').style.display = "block";
}
setTimeout("hideButton('GotoBasket')", 4000)
}
function hideButton(GotoBasket) {
if (document.getElementById('GotoBasket').style.display == "block") {
document.getElementById('GotoBasket').style.display = "none";
}
}

Вот ссылка: http://demo.arammu.ru/products/1-fashion-%...6%D0%BE-12.aspx

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

meta,

Ссылка не рабочая.

А как реализована сама кнопка? Если формой, то можно, например, при клике добавлять к кнопке атрибут disabled. А после срабатывания функции добавки товара, убирать его.

Ну и можно еще индикатор какой-нибудь добавить, чтобы показать, что процесс идет.

Edited by sigma77
Link to comment
Share on other sites

  • 0

Подменить кнопку аналогичной по виду, но без события на ней. Метод cloneNode именно это и делает, насколько я знаю.

Т.е. действия такие:

  1. юзер кликает на кнопку
  2. мы клонируем ноду и прячем оригинал
  3. после того как инфа добавилась уничтожаем клона и вновь показываем оригинал

Link to comment
Share on other sites

  • 0

Я понял так, что по клике на первую кнопку появляется вторая и видна пока идет процесс добавления, всё это время некликабельной должна быть первая кнопка. Это не так?

Ну а самый простой вариант — при каждом клике на кнопку проверять отдельную переменную-флаг, если он не поставлен (первое нажатие) — ставить флаг и вызывать ф-цию, если поставлен — ничего не делать. По завершению процесса добавления флаг сбрасывать. Просто по первому описанию у меня сложилось впечатление, что видимость второй кнопки как раз может играть роль такого флага...

Link to comment
Share on other sites

  • 0

В общем, вот как идет процесс:

кликается первая кнопка и начинается добавление товара, после того как он стал добавлен появляется вторая с ссылкой, которой задано время её видимости (4 сек), а проблема в том что процесс добавления не всегда сразу срабатывает, и соответственно вторая кнопка не сразу появляется, и в это время пользователь может ещё несколько раз кликнуть по первой, что приведет ещё к добавлению товара, поэтому надо заблокировать кнопку на время добавления товара

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy