Перейти к содержимому


Отключение редактирования подтаблицы внешним javascript


Сообщений в теме: 5

#1 suraev

    Активный участник

  • Пользователи
  • PipPipPip
  • 37 сообщений
  • Пол:Мужчина

Отправлено 26 Июль 2024 - 12:29

Передо мной стоит задача - отключить возможность редактирования записей в режиме подтаблицы, но оставить возможность редактировать эти записи в полноформатном режиме (режиме собственной таблицы).

Через $ADDITIONAL_JAVASCRIPT_INCLUDE подключил свой файл .js

В нём разместил:

function disableSubtableEdit() {

document
.getElementById("fast_edit_span_9170_70_130").disabled = true;

}

document
.addEventListener("DOMContentLoaded", function() {  

disableSubtableEdit
;

}

);

fast_edit_span_9170_70_130 - это id того select, который пробую отключить. Не срабатывает мой способ, всё равно активен этот select в подтаблице. Укажите, пожалуйста, на мою ошибку.

Сообщение отредактировал suraev: 26 Июль 2024 - 12:30


#2 Timur

    Активный участник

  • Техподдержка ООО "КБ"
  • PipPipPip
  • 869 сообщений
  • Пол:Мужчина

Отправлено 30 Июль 2024 - 11:30

Здравствуйте. Получил ответ от специалиста.
Для обычных полей ваш способ подойдет, но у полей связи поле ввода не select, а input, который находится ниже select, и помимо этого ещё существует кнопка раскрытия списка.

Вот таким образом можно заблокировать поле связи:
document.getElementById("fast_edit_span_6861_5_13").parentElement.querySelector("input").disabled = true;
document.getElementById("fast_edit_span_6861_5_13").parentElement.querySelector("a").style = "display: none";

#3 suraev

    Активный участник

  • Пользователи
  • PipPipPip
  • 37 сообщений
  • Пол:Мужчина

Отправлено 31 Июль 2024 - 12:27

Не срабатывает, видимо нужно учесть ещё какой-то нюанс. Я подключаю свой скрипт в head с атрибутом defer, он не находит document.getElementById ("fast_edit_span_9170_70_130") и, соответственно, не отрабатывает. Вижу, что подтаблица выводится своим js отдельно. Как мне подключить свой скрипт так, чтобы видеть и элементы подтаблицы?

#4 Timur

    Активный участник

  • Техподдержка ООО "КБ"
  • PipPipPip
  • 869 сообщений
  • Пол:Мужчина

Отправлено 31 Июль 2024 - 16:15

Просмотр сообщенияsuraev (31 Июль 2024 - 12:27) писал:

Не срабатывает, видимо нужно учесть ещё какой-то нюанс. Я подключаю свой скрипт в head с атрибутом defer, он не находит document.getElementById ("fast_edit_span_9170_70_130") и, соответственно, не отрабатывает. Вижу, что подтаблица выводится своим js отдельно. Как мне подключить свой скрипт так, чтобы видеть и элементы подтаблицы?

Необходимо по факту у вас смотреть и составлять нормальный код с динамических выбором индикатора.
Если не найдётся других рекомендаций на форуме, помочь смогут вам в рамках платных услуг, обратиться сможете через менеджера.

#5 suraev

    Активный участник

  • Пользователи
  • PipPipPip
  • 37 сообщений
  • Пол:Мужчина

Отправлено 01 Август 2024 - 12:47

Разобрался. Вот так можно отключить редактирование полей связи в подтаблице. Осталось ещё допилить до отключения редактирования вообще всех полей, а также вернуть "лупу" перехода в запись, т.к. она тоже попала под раздачу.

subtable_130 - надо поменять на id своей подтаблицы (именно подтаблицы)


window.onload = function () {

const element = document.getElementById ("subtable_130");

       
if (element) {
               
const inputs = element.querySelectorAll("input");
               
const anchors = element.querySelectorAll("a");
               
const selects = element.querySelectorAll("select");
               
const buttons = element.querySelectorAll("button");

                inputs
.forEach(input => {
                        input
.disabled = true;
               
});

                anchors
.forEach(anchor => {
                        anchor
.style.display = "none";
               
});

                selects
.forEach(select => {
                       
select.disabled = true;
               
});

                buttons
.forEach(button => {
                        button
.disabled = true;
               
});
       
}


};

Сообщение отредактировал suraev: 01 Август 2024 - 12:51


#6 Timur

    Активный участник

  • Техподдержка ООО "КБ"
  • PipPipPip
  • 869 сообщений
  • Пол:Мужчина

Отправлено 12 Август 2024 - 10:36

Отлично) Рад, что смогли разобраться с текущей задачей самостоятельно





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных