miltorg,
1. Слушаем всё события change в документе в режиме
useCapture(это отдельная тема, тут важно то, что без него глобально change не отловить).
2. Проверяем, что event.target (элемент который вызвал событие) соответствует селектору [id^="edit-product-id"] или является ребёнком элемента с таким селектором, путём попытки получения closest ближайшего такого элемента.
3. Если не нашли - прекращаем обработку.
4. Иначе - alert.
Сам document переписать невозможно, так что слушатель висит всегда, что бы там на странице не менялось.