Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Событие onchange на чекбокс (https://javascript.ru/forum/events/84890-sobytie-onchange-na-chekboks.html)

Alex57B 28.01.2023 20:24

Событие onchange на чекбокс
 
Добрый день!
Прошу помощи, ибо сам уже не знаю куда рыть (туплю видимо) :)

Итак, есть чекбокс и поле. Поле обрабатывает функция func_change_post(); (транслит и аякс на проверку дубля этого поля к базе).


function func_change_post(){	

	$('#title_post').liTranslit({

		elAlias: $('#url_post')
		
	});

 
  
	 
	 
$('#title_post').blur(function(){
	
    $('#url_post').trigger('change');
	
	
});
	 

	
	$('#url_post').change(function(){
		
				
		
	//Здесь обработка аяксом, ничего выдающегося

});



}



Чекбок разрешает или запрещает изменение поля.
При загрузке страницы делаю так, все работает
if($("#url_change_post").prop("checked") == false) { 

func_change_post();
	 
}


А вот если я сам чекбокс кликаю, я сделал так

$( "#url_change_post" ).on( "change", function() {
	
if($(this).prop("checked") == false) {
				  
               $( "#url_change_post" ).prop( "checked", false );
			   
				func_change_post();
				
              }

  
});


И тоже вроде все работает, но если я ставлю чекбокс после того как сам его убирал функция сама продолжает работать, хотя я от нее этого не жду.

Как прекратить выполнять функцию func_change_post(); если чекбокс отмечен?

При этом до этого он может несколько раз быть включен/выключен.

рони 28.01.2023 21:00

Alex57B,
не очень понятно зачем бесконечно назначать обработку blur и change, на сервер идёт масса запросов одновременно, да и браузеру не сладко..

Alex57B 28.01.2023 23:22

Цитата:

Сообщение от рони (Сообщение 550299)
Alex57B,
не очень понятно зачем бесконечно назначать обработку blur и change, на сервер идёт масса запросов одновременно, да и браузеру не сладко..

Может из-за этого и не работает. Вы бы как сделали?

Alex57B 28.01.2023 23:27

рони,
А бесконечно назначено как полагаю, типа когда печатают в поле #title_post идет триггер на #url_post и #url_post проверяется на дубли в базе

рони 28.01.2023 23:31

Цитата:

Сообщение от Alex57B
Вы бы как сделали?

не зная ваш алгоритм, ванговать нет желания)))
но func_change_post() не должна содержать никаких обработчиков событий.

Alex57B 28.01.2023 23:33

рони,
Направление понял, буду думать

рони 28.01.2023 23:45

Alex57B,
типа что-то такого должно быть ...
function async func_change_post(){

    const translit = await liTranslit();
    const double = await liDouble();
    const checked = url_change_post.checked;
    if(translit && !double && !checked) что-то делаем
}


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