Я просто использовал следующее (кажется, намного проще):
element.blur();
element.focus();
В этом случае событие запускается только в том случае, если значение действительно изменилось так же, как вы вызывали бы его при нормальном фокусе фокуса выполненным пользователем.