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


Отключение редактирования подтаблицы внешним 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
  • 865 сообщений
  • Пол:Мужчина

Отправлено 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
  • 865 сообщений
  • Пол:Мужчина

Отправлено 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
  • 865 сообщений
  • Пол:Мужчина

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

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





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

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