Чтобы избежать дублирования текста в поле ввода при динамическом изменении его значения, вам нужно убедиться, что добавленный текст добавляется только при определенных условиях и не дублируется, если он уже есть в строке. Для этого вы можете использовать следующую стратегию:
1. Проверять, есть ли уже добавленный текст в значении поля перед тем, как добавлять новый текст.
2. Если он уже есть, не добавлять его снова.
Вот пример исправленного кода:
```javascript
const giftMessInput = document.getElementById("gift_mess");
if (document.getElementById("mess").value == 'Курьер') {
const addedText = 'добавленный текст ';
// Проверяем, есть ли уже добавленный текст в поле ввода
if (!giftMessInput.value.startsWith(addedText)) {
giftMessInput.value = addedText + giftMessInput.value;
}
}
```
В этом коде мы используем метод `startsWith()` для проверки, начинается ли текущее значение поля ввода с добавленного текста. Если нет, мы добавляем его в начале. Это устраняет проблему дублирования текста.
### Альтернативный подход
Если вы хотите не делать проверку, а всегда заменять текст, вы можете использовать функцию `substring()`, чтобы сохранить пользовательский текст и просто заменить предшествующий текст:
```javascript
const giftMessInput = document.getElementById("gift_mess");
if (document.getElementById("mess").value == 'Курьер') {
const addedText = 'добавленный текст ';
// Сохраняем пользовательский текст
const currentUserText = giftMessInput.value.replace(addedText, '').trim();
giftMessInput.value = addedText + ' ' + currentUserText;
}
```
Этот код удаляет `добавленный текст`, если он уже есть, и затем добавляет его снова, сохраняя пользовательский текст. Это тоже поможет избежать дублирования.