#javascript #jquery
Вопрос:
Я использую java-скрипт для создания веб-страницы, и у меня есть несколько входов типа text с read-only
атрибутом, и я хочу определить, изменился ли какой-либо ввод в его атрибутах, например, если какой-либо ввод удалил свой атрибут только для чтения, затем сделайте что-нибудь с этим вводом.
Примечание: Я собираюсь изменить атрибут только для чтения, используя код java-скрипта. И я хочу, чтобы другой код обнаружил это изменение атрибута только для чтения.
Я уже пробовал это
$('input[readonly]').attrchange({
trackValues: true,
callback: function (event) {
}
но мне нужен любой ввод в документ.
Комментарии:
1. Просто измените
$("#input-id")
на$(document)
2. Кто удаляет
readonly
атрибут? Поместите туда свою функцию. Пользователь не может удалить его3.
$(document).on("input", ...
сделайте и то и другоеchange keyup paste
4. Это немного похоже на проблему XY.
readonly
Собственность не исчезнет волшебным образом. Так что либо вы делаете это в своем коде, но если вы знаете, что удаляете это свойство, почему вы не можете затем прослушать изменения в этом элементе? Если вы не удалите его, а пользователь сделает это с помощью инструментов разработчика, то какую проблему вы пытаетесь там решить?5. ДИАА, я не понимаю, ты говоришь
but I need for any input in the document
, но ты используешь код$('input[readonly]')
, так почему бы просто не использовать$('input')
Ответ №1:
Я не знаю, является ли это ответом, но я не могу изложить все это в комментарии.
Кроме того, реализация этого, вероятно, не будет такой гладкой и простой, как в jQuery.
Вы можете установить Изменяемого наблюдателя, который будет обнаруживать любые изменения в элементах. Наблюдатель установлен на родителе, и вы можете выбрать, что обнаруживать. Это то, что делают программы чтения с экрана, чтобы адаптироваться к любым изменениям на странице. Загвоздка в том, что вам нужно будет немного изучить это, прежде чем вы сможете его использовать.
Ответ №2:
Вы можете использовать наблюдателей мутаций для обнаружения любых изменений в элементах, которые вы хотите!
Ниже приведен простой пример, который может потребоваться изменить в зависимости от ваших потребностей:
//Get all input elements
var inputs = document.getElementsByTagName('input');
//This is the callback function on when the filtered attribute changes
const observer = new MutationObserver(function (mutations, observer) {
//Here you can write any code to trigger when the mutation happens.
});
//We bind the observer to observe all the changes in the readonly attribute
observer.observe(inputs, {
attributes: true,
attributeFilter: ['readonly']
});
Обратите внимание, что я не тестировал приведенный выше код, поэтому в нем могут потребоваться какие-либо конкретные изменения!