В общем вешаю свой обработчик на кнопку увеличения/уменьшения кол-ва товара, при определенном условии вылезает алерт и по сути нужно не изменять кол-во, НО битриксу(а может в целом js) пофигу что идет return false(event.preventDefault()/event.stopImmediatePropagation()) он все равно выполняет другие handler повешаные на эти элементы(а именно увеличивает/уменьшает кол-во).
Ну и собственно вопрос - как отключить все ОСТАЛЬНЫЕ обработчики?
И стоит отметить:
Проблема как раз в том, чтобы эти эвенты выключились только при достижении моего условия, т.е. мой обработчик сработал, и не дал другим обработчикам на этом элементе сработать(в данный момент у меня срабатывает алерт, но потом идут все остальные обработчики которые понавешаны).
А если же человек после этого нормально все ввёл(в данном случае кол-во товара), то мой обработчик возвращает true, и остальные как ни в чем не бывало работают.
Для битриксоидов:
Также пытался юзать BX.denyEvent/BX.allowEvent тоже непомолго, как и реализация обработчика через BX.bind
$(document).ready(function() {
function checkInputsQuantity($elem){
let prevQuantity = $elem.data('val'),
totalCount = 0;
$('.basket-item-amount-filed').each(function(){
totalCount += Number($(this).val());
});
if (totalCount > 50){
return false;
}
return true;
}
$(document).on('change','.basket-item-amount-filed', function () {
if (!checkInputsQuantity($(this))){
//BX.unbindAll($(this)[0]);
alert('Невозможно заказать более 50 упаковок, при таком заказе просим обратиться напрямую к нашим специалистам по телефону +7 (342) 213-69-40');
return false;
}
});
$(document).on('click', '.basket-item-amount-btn-plus, .basket-item-amount-btn-minus', function (e) {
if (!checkInputsQuantity($(this).parents('.basket-item-block-amount').find('input'))){
let el = $(this)[0];
//BX.unbindAll($(this)[0]);
alert('Невозможно заказать более 50 упаковок, при таком заказе просим обратиться напрямую к нашим специалистам по телефону +7 (342) 213-69-40');
//setTimeout("BX.allowEvent(el,'click');",1000);
}
});
});