Услуги профессионального Битрикс-программиста

jquery, javascript сниппеты


на кейап с задержкой реагируем, чтобы когда закончил печатать сделать
$('#myfield').on('keyup',function(){   
   var val = $('#myfield').val();
   var interval = setInterval(
        function(){
            if($('#myfield).val() == val){
                //Что-нибудь делаем
            }                    
            clearInterval(interval);
        }, 
    700);
});
ajax
let dataRequest = {
   town : currentTown,
   street: currentStreet,
   house: currentHouse
}            
$.ajax({
     url: "ajax.php",
     data: dataRequest,
     type: "GET",
     dataType: "json"

}).done(function(data) {
   //что-нибудь делаем              
     
}).fail(function(data){
   console.log(data);
});
json
let result = {}; //как-то заполняем
$("#result").val(JSON.stringify(result)); //кодирует
result = JSON.parse($("#result").val()); //декодирует

checked,selected
$('#elemId).prop('checked')); //true or false
$('#optionId).prop('selected',true)); //ставим selected у option select
let option = $('select#elemId option:selected'); //получим выбранный option у select 

для своего поля кастомного типа, основанного на datetime, template.php
плагин https://xdsoft.net/jqplugins/datetimepicker/
//php
$APPLICATION->AddHeadScript('/local/templates/.default/js/jquery-3.6.0.min.js'); 
$APPLICATION->AddHeadScript('/local/templates/.default/js/jquery.datetimepicker.full.min.js');
$APPLICATION->SetAdditionalCSS('/local/templates/.default/css/jquery.datetimepicker.min.css');
//js
$(document).ready(function(){
   $.datetimepicker.setLocale('ru');
   $('#<?=$name?>_datetimepicker').datetimepicker({
      
      minDate:0,//or 1986/12/08
      timepicker:true,
      format:"d.m.Y H:i",
      hours12: false,                  
      inline:true,
      allowTimes:[
             '08:00', '08:30', '09:00', '09:30', '10:00', '10:30', '11:00', '11:30', 
           '12:00', '12:30', '13:00', '13:30', '14:00', '14:30', '15:00', '15:30',
           '16:00', '16:30', '17:00', '17:30', '18:00', '18:30' , '19:00' , '19:30',
           '20:00', '20:30', '21:00', '21:30', '22:00', '22:30' 
         ]
      ,
      onSelectDate:function(ct,$i){                     
        BX.fireEvent(BX('<?=$name?>_datetimepicker'),'change');
        BX.fireEvent(BX('<?=$name?>_datetimepicker'),'oninput');                    
      },
      onSelectTime:function(ct,$i){                  
        BX.fireEvent(BX('<?=$name?>_datetimepicker'),'change');
        BX.fireEvent(BX('<?=$name?>_datetimepicker'),'oninput');                    
      },

   });
   $('#<?=$name?>_datetimepicker').change(function(){
      
      let day =$('#<?=$name?>_datetimepicker').val();
      day =  day.split(" ")[0];               
      dataRequest = {
         get_connection_to_day: day,
         id: '<?=$arParams["arUserField"]["ENTITY_VALUE_ID"]?>'                  
      };
      $('#mes_<?=$name?>').html();
      $.ajax({
           url: "<?=$this->GetFolder()?>/ajax.php",
           data: dataRequest,
           type: "GET",
           dataType: "json"

      }).done(function(data) {
         let text = '';
         if(data>0){
            $('#mes_<?=$name?>').html('Запланировано '+data+' подкл. на '+day);   
         }
         else{
            $('#mes_<?=$name?>').html('НЕТ других запланированных подключений на '+day);      
         }
      });
   });
});
плавная прокрутка до элемента
вариант 1
$(document).ready(function(){
   $('a[href=#rec294391208]').on('click', function(e){
      e.preventDefault();
        $('html,body').stop().animate({ scrollTop: $('#rec294391208').offset().top }, 500);    
   });
});
вариант 2

$(document).ready(function(){   
   $(document).on("click", ".page-wrap .page a", function() {
      window.scrollTo({ top: 0, behavior: 'smooth' })
   });
});
изменить адрес js и отпправить в браузер в историю
history.pushState({ 'page_id': page_id++}, title, curLoc);
NavigationCache[window.location.pathname] = $('main').html();