Не у всех HTML тегов есть собственное содержимое, поэтому не во всех случаях стоит ждать корректного результата при использовании псевдоэлементов на следующих тегах
<img>,
<input type="text">,
<input type="email">,
<input type="password">,
<input type="datetime">, etc.
Однако вы можете обернуть input в дополнительный тег, после чего использовать псевдоэлемент родительского элемента.
<div class="inputbox">
<input type="text">
</div>
.inputbox::after {
/* ...стили для псевдоэлемента */
}