@leyarthemes

Как сравнить строку с первыми символами ввода поля input?

Здравствуйте, есть строка, например "678". Как правильно сравнить первые 3 цифры, введённые в input c обработчиком события .addEventListener("input", function() { }); так, чтобы одна функция выполнялась пока цифры совпадают (и позиции цифр), а при первом неудачном сравнении - начала выполнятся другая функция.
Если первая цифра 6 - продолжаем;
если первая 6, вторая 7 - продолжаем;
если первая 6, вторая 7, третья не 8 - стоп.
Я думаю, что можно реализовать это с помощью for и if, но получается громоздко, хотел бы узнать более компактные и красивые варианты. Спасибо.
  • Вопрос задан
  • 180 просмотров
Решения вопроса 2
@h88p
Pre-Junior HTML Developer
Если я правильно понял, то:
var str = '678'.split('');
var input = '679'.split('');
var result = '';
input.map((w,e) => {if (w === str[e]) {function one() {result+=1} return one()} else {function two() {result +=2} return two()}})

Переменная result станет 112, т.к 6 == 6 => выполняется функция one(), 7 == 7 => выполняется функция one(), 8 != 9 => выполняется функция two()
Ответ написан
@medin84
software developer
Попробуй сформировать regexp.
https://codesandbox.io/s/j71lzj419v

const rgxpText = "678"; // текст регулярки
const text = "678"; // проверяемое
let rgxp;
// условие для отсечения регулярки по длине проверяемого
if (rgxpText.length > text.length) {
  rgxp = new RegExp(`^${rgxpText.substr(0, text.length)}`);
} else {
  rgxp = new RegExp(`^${rgxpText}`);
}

const isResult = rgxp.test(text);
if (isResult) {
    // сделать одно
} else {
    // сделать другое
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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