При использовании атрибута set для значения добавляется value=”something”
к элементу ввода HTML. Это означает, что он устанавливает начальное значение, которое всегда переопределяется любым ручным вводом.
И для прокрутки до конца вы можете использовать JS scrollLeft
и установить его в значение в пикселях больше, чем ширина элемента ввода.
Итак, замена
el.setAttribute('value', f.name);
в вашем JavaScript на
el.value = f.name;
el.scrollLeft = 1000;
решит обе проблемы.