jQuery dezaktywacja linków po załadowaniu strony

jQuery dezaktywacja linków po załadowaniu strony
SH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 152
0

Witajcie, nie mogę sobie poradzić z jednym problemem. Ogólnie chodzi o to aby nie było możliwości kliknięcie na link bez zaznaczenia 2x checkbox.
Wszystko działa jak należy jeśli klikniemy, na któryś checkbox. Jednak po załadowaniu strony (bez ruszania checkboxów) linki są aktywne, nie wiem dlaczego, ponieważ funkcja activeLink() wywoływana jest zaraz po załadowaniu strony, jak i podczas zmiany checkbox.

Kod, który przygotowałem:

Kopiuj
$(document).ready(function(){
	function activeLink() {
		$('.payment_module a').click(function(e){ e.preventDefault(); });
		
		if (($('#cgv').prop('checked') == true) && ($('#cgv_year').prop('checked') == true)) {
			$('.payment_module a').unbind();
		} else {
			$('.payment_module a').click(function(e){
				e.preventDefault();
			});
		}
	}
	$('#cgv, #cgv_year').change(function() {
		activeLink();
	});	
	activeLink();
});
czysteskarpety
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Piwnica
  • Postów: 7697
1

W ostateczności, do linka możesz dodać coś z css, np. klasę z:
pointer-events: none;
lub
display: none;

SH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 152
0
czysteskarpety napisał(a):

W ostateczności, do linka możesz dodać coś z css, np. klasę z:
pointer-events: none;
lub
display: none;

Dziękuję za odpowiedź. Po części jest to dobre rozwiązanie jednak nie będę mógł wtedy wyświetlić alertu, że należy zaznaczyć te dwa pola :/

SH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 152
0

Jedyne co mi przychodzi do głowy to usunięcie "hrefów" i zastąpienie ich #. Po zaakceptowanie dwóch checkboxów .. przywrócenie tych linków.

serek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1507
1
shl napisał(a):

Dziękuję za odpowiedź. Po części jest to dobre rozwiązanie jednak nie będę mógł wtedy wyświetlić alertu, że należy zaznaczyć te dwa pola :/

Niby czemu? Dodajesz klasę do linku, a potem ją usuwasz, gdy checkbox jest zaznaczony.

SH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 152
0

Z tego co sprawdzałem, w przypadku zastosowania:

Kopiuj
pointer-events: none;

lub

Kopiuj
            $('.payment_module a').click(function(e){
                e.preventDefault();
            });

Nie wypluje mi też alertu, że należy zaznaczyć poszczególne pola.

serek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1507
0

Jakiego alertu? jak ten alert wywołujesz?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.