Задать вопрос

Как сделать частично статичный текст в input?

Есть чекбоксы с названием стран при нажатии на которые в input через запятую они добавляются
и надо сделать так, чтобы пользователь мог вручную добавлять свой текст, но при попытке удалить существующий у него ничего не получалось
<input type="text" class="form-control" id="f15" value={ abroaddata.abroaddeftext + abroaddata.abroadtext } on:keyup={abroadTextFilter}>

let abroaddata = {
    abroaddeftext:"inostranstvo",
    abroadtext:""
}
function abroadTextFilter(e) {
    console.log(e)

    if (e.key) {
        if (!abroaddata.abroadtext.trim().length) {
            abroaddata.abroadtext = e.data==","?", ":" "+e.data
        }else{
            abroaddata.abroadtext += e.data
        }
    }else{
        console.log(abroaddata.abroadtext)
        if (abroaddata.abroadtext.trim().length<1) {
            abroaddata.abroadtext += " "
        }else{
            abroaddata.abroadtext = abroaddata.abroadtext.slice(0, -1)
        }

    }
}

Этот код на телефоне отказывается работать и вместо удаления дублирует уже существующий текст

Кто знает как быть?
  • Вопрос задан
  • 209 просмотров
Подписаться 1 Средний 2 комментария
Решения вопроса 1
GORNOSTAY25
@GORNOSTAY25 Автор вопроса
<input type="text" class="form-control" id="f15" value={abroaddata.abroaddeftext + abroaddata.abroadtext} on:input={abroadTextFilter}>

let abroaddata = {
    inostr:true,
    hrv:false,
    bih:false,
    srb:false,
    alb:false,
    abroaddeftext:"inostranstvo",
    abroadtext:""
}
function abroadTextFilter(e) {
    let indx = e.target.value.indexOf(abroaddata.abroaddeftext)
    if (indx !== 0) {
        e.target.value = abroaddata.abroaddeftext
        return;
    }
    abroaddata.abroadtext = e.target.value.slice(abroaddata.abroaddeftext.length)
}

Подсмотрел здесь

Антон Шаманов
никак не сделать

Доказал обратное)

dollar
чем сложнее хотелка, тем хитрее решение.

Но в конце концов получилось банально просто)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
dollar
@dollar
Делай добро и бросай его в воду.
<input type="text" disabled>

input1.disabled = true;
Ответ написан
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
никак не сделать - ты не можешь определить положение курсора в input. поэтому просто делаешь чекбоксы + поле для произвольных значений и выводишь результат в <input type="text" disabled>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы