Переход к следующему input полю при нажатии кнопки Enter

Задача: есть таблица, в каждой ячейке которой находится поле input. Необходимо чтобы после ввода данных в поле и нажатии Enter проиходил переход на следующую ячейку

Решение:

 $('body').on('keydown', 'input, select', function(e) {        
            if (e.key === "Enter") {
                var self = $(this), form = self.parents('table:eq(0)'), focusable, next;
                focusable = form.find('input,textarea').filter(':visible');
                next = focusable.eq(focusable.index(this)+1);
                if (typeof next!=undefined){
                    if (typeof next[0]!=undefined){
                        if (next[0].disabled==true){
                            next = focusable.eq(focusable.index(this)+3);    
                        };
                        if (next.length) next.focus();
                    };
                };
                return false;
            }
    });    

Bitrix: уязвимость CGI Generic HTML Injections

Уязвимость актуальна для версии v21.9 и ниже. Пока нет информации что исправлена!

Эксплуатация: при переходе по специально сформированной ссылке на сайт с битриксом, выводится произвольное содержимое и выполняется произвольный js код.

Проверка вшивости сайта:

https://ваш_сайт/catalog/?q=<"dqzsbr%20>

Исправление: самый простой способ, до исправления от битрикса — поправить .httaccess, добавив строчки:

   
    RewriteCond %{QUERY_STRING} "
    RewriteRule ^.*$ - [F]
    RewriteCond %{QUERY_STRING} %22
    RewriteRule ^.*$ - [F]
    RewriteCond %{QUERY_STRING} %3C
    RewriteRule ^.*$ - [F]
    #RewriteCond %{QUERY_STRING} \<
    RewriteCond %{QUERY_STRING} %27
    RewriteRule ^.*$ - [F]
    RewriteCond %{QUERY_STRING} %3E
    RewriteRule ^.*$ - [F]


Особенности установки helpdesk-z

К сожалению в руководстве по установке, процесс описан очень коротенько, и очень часто установка сводится к выводу сообщения:

Whoops! We seem to have hit a snag. Please try again later…

Чтобы улучшить информативность фреймворка, что же ему таки не хватает, можно временно добавить в index.php строчку:

define('ENVIRONMENT', 'testing');

Но! В этом случае после успешного прохождения всех шагов инсталляции, фремворк будет пытаться проходить тесты и писать результаты в SQLite3, что нам не нужно. Потому не забудьте эту строчку удалить.

Для локализации, достаточно скачать необходимый язык из https://github.com/helpdesk-z/translations, и в настройках поменять локаль на нужную

datatables.net: своя стилизация кнопок print и excel

Задача: кастомизировать внешний вид кнопок печати и экспорта, с выносом их в отдельный контейнер внизу экрана

Самый простой способ: отрисовка кнопок в своём контейнере, и навешивание эвента на их клик.

Определим CSS:

.hided {display:none}

datatables.net:

при выводе кнопок, сразу их скрываем, чуть ниже навесим на них эвент

        buttons: [
            {
            text: 'Добавить клиента',
                action: function ( e, dt, node, config ) {
                    AddUserPhone.value="";
                    AddUserName.value="";
                    AddUserPassword.value="";
                    if (owner_select.value>0){
                        $("#AddClientModal").modal("show");  
                    } else {
                        ToastMessage("error","Внимание!","Вам необходимо выбрать владельца");
                    };                                        
                }
            },
            {
                extend: 'excelHtml5',
                text:"",
                className:"hided"
            },            
            {
                extend: 'print',
                className:"hided",
                text:"",
            }
        ],

Контейнер:

рисуем кнопки, и навешиваем на них стандартное срабатывание по onclick

<div id="export_buttons">
    <div class="dt-buttons btn-group flex-wrap"> 
        <button onclick='$(".buttons-excel")[0].click();' class="btn buttons-excel buttons-html5 btn-link d-flex align-items-center" tabindex="0" aria-controls="clientsgrid" type="button">
            <span><i class="icons i_excel me-2"></i> Excel</span>
        </button> 
        <button onclick='$(".buttons-print")[0].click();' class="btn buttons-print btn-link d-flex align-items-center" tabindex="0" aria-controls="clientsgrid" type="button">
            <span><i class="icons i_print me-2"></i> Печать</span>
        </button> 
    </div>    
</div>

Результат:

Bootstrap 5: отслеживание переключения вкладок (табов)

Задача: отследить переключение вкладок пользователем

Решение:

var tabEl = document.querySelector('#myTab')
    tabEl.addEventListener('shown.bs.tab', function (e) {       
      atab=$(e.target).attr("id");
      console.log("--щелкнули по табу"+atab);        
    })   
1 12 13 14 15 16 55