Есть еще не очень очевидный вариант но он зависит от того как это поле было сделано.
Не уверен, не знаю да и не спрашивал, глобальная ли это проблема, но у меня было так:
clear() судя по W3C спеке по дефолту после очистки всегда вызывает blur().
У меня девы повесили на onBlur() ивент переопределение значения поля, однако если поле пустое, то значение откатывалось до предыдущего. то-есть clear() отрабатывал, но потом значение возвращалось.
Решение: обойти clear. Присвоить value элементу через JS обычно не хватает. После очистки\присвоения нового значение, надо будет вручную тригернуть onChange и onBlur()