Si nuevos elementos con la clase
.updateresp
son añadidos después de que el código se haya ejecutado, estos nuevos elementos no recibirán los 'eventListener'. Para resolver este problema, puedes utilizar la técnica de delegación de evento. En lugar de adjuntar el 'eventListener' directamente a los elementos
.updateresp
, lo adjuntarías al
document
y luego verificarías si el evento proviene de un elemento
.updateresp
. Aquí un ejemplo de cómo se haría atendiendo a tu código:
JavaScript:
document.addEventListener('input', function(e) {
if (e.target.classList.contains('updateresp')) { // si el evento está en un .updateresp
var dataId = $(e.target).data("id");
var textarea = document.getElementById("noi1" + dataId);
textarea.style.height = 'auto';
textarea.style.height = textarea.scrollHeight + 'px';
}
});
document.addEventListener('keydown', function(e) {
if (e.target.classList.contains('updateresp')) { // si el evento está en un .updateresp
if (e.key === 'Enter') {
e.preventDefault();
var contenido = e.target.value.trim();
var dataId = $(e.target).data("id");
if (contenido) {
document.getElementById("resposter" + dataId).submit();
} else {
e.target.reportValidity();
}
}
}
});
Espero que esto te ayude!