Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Выполнение действий после checkbox.change (https://javascript.ru/forum/events/68382-vypolnenie-dejjstvijj-posle-checkbox-change.html)

dalexra51 13.04.2017 10:31

Выполнение действий после checkbox.change
 
Всем привет!
jQuery( ".filter" ).change(function(event) {
                    if(jQuery(this).is(":checked")) {
						alert(jQuery(this).attr("data-info"));
						// write positive cookie
                    } else { 
						alert(jQuery(this).attr("data-info"));
						// write negative cookie
                    }
					
					alert( dataFromCookie );
					window.location.href = dataFromCookie;
					
                });

Суть проблемы:
При изменении чекбокса его данные + обработка пишутся в куки. Затем, алерт выдает правильные куки, но когда их подставляю в строку для перехода там отображается все неверно.
Вопрос:
Как заставить появлять алерт (и переход) после полного срабатывания события (То есть, сейчас алерт выскакиевает, а после нажатия ОК уже отмечается чекбокс) А надо сделать чтоб сначала отметился чекбокс а затем уже сработал Алерт. Подозреваю что проблема в этом
Спасибо

ksa 13.04.2017 10:48

Цитата:

Сообщение от dalexra51
Как заставить появлять алерт (и переход) после полного срабатывания события (То есть, сейчас алерт выскакиевает, а после нажатия ОК уже отмечается чекбокс) А надо сделать чтоб сначала отметился чекбокс а затем уже сработал Алерт.

Все действия делай в setTimeout()...

dalexra51 13.04.2017 10:49

ставил на 100 мс. Не помогает (то есть проходит задержка а потом отмечается чекбокс)

ksa 13.04.2017 10:51

Цитата:

Сообщение от dalexra51
ставил на 100 мс. Не помогает

Где полный пример?

ksa 13.04.2017 10:58

Цитата:

Сообщение от dalexra51
ставил на 100 мс. Не помогает

У меня вот все работает...

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	$(':checkbox').change(function(){
		setTimeout((function(Type){
			return function(){alert(Type);}
		})(this.checked),1)
	});
});
</script>
</head>
<body>
<input type='checkbox' />
</body>
</html>

dalexra51 13.04.2017 15:33

Тут оказалось вот в чем загвоздка
есть функция
function pageRedirect ( ff ) {
                var urlTrail = '?';
                if ( ff ) {
                    jQuery.each(ff, function(i, val) {
                        if ( val.length ) { console.log(i + ' === ' + val); urlTrail += i + '=' + val + '&'; console.log(urlTrail); }
                    });                   
                }
                var newAdr = window.location.protocol + '//' + window.location.host + window.location.pathname + urlTrail;
                alert(newAdr);
                //window.location = newAdr;
                //location.assign(newAdr);
            }

на вход идет объект
Object
	brand
		Array[2]
			"cat-chow"
			"catsan"
	species
		Array[1]
			"koty"


а на выходе адрес ?species=koty&brand=cat-chow,catsan&

Так вот когда просто алерт - высвечивает нормально как все должно быть. НО! если раскомментировать редирект - в адрес попадает только последний выбранный чекбокс.(то есть последний элемент который вставился в объект)

ksa 13.04.2017 16:02

Цитата:

Сообщение от dalexra51
Тут оказалось вот в чем загвоздка

Пока "загвоздка" с твоим тестовым примером. Его просто нет. :(


Часовой пояс GMT +3, время: 20:18.