Я пытаюсь использовать конвертер значений aurelia для анализа значений, введенных пользователем, удалив все недопустимые символы, введенные в поле ввода, и отобразив проанализированный текст.Но есть несколько крайних случаев, когда я не могу отобразить проанализированный текст пользователю, вместо этого отображается введенный текст с недопустимыми символами.На самом деле введенный текст фактически анализируется, поэтому мне интересно, что можно изменить, чтобы отобразить проанализированный текст.
Я попытался включить два оператора замены регулярных выражений, и, похоже, ничего не исправило.
преобразователь значений clean-string.ts:
export class CleanStringValueConverter {
fromView(val) {
val = val
.replace(/([|!/&*:;$%@#`'_"^<>()+-.,\\])+/g, "")
.replace(/([^a-z 0-9]+)/gi, "")
.trim();
console.log(val);
return val;
}
}
app.html:
<template>
<require from="./clean-string"></require>
<h3>Enter text with illegal charaters</h3>
<input type="text" value.bind="dirtyString | cleanString" />
</template>
app.ts:
export class DCString{
dirtyString: string;
}
Например: я печатаюв 'random ####' я ожидаю, что 'random' будет отображаться в поле ввода при вводе последнего символа, потому что я анализирую недопустимые символы.
Но я просто вижу 'random #### 'в текстовом поле, если я не введу дополнительный символ, который затем инициирует синтаксический анализ.
Так есть ли способ решить эту проблему?Какие изменения мне нужно будет сделать, чтобы это работало?Заранее благодарим за ваш вклад !!
Вот фрагмент того, что происходит:
Из консоли мы можем видеть на самом делевведенный текст анализируется как мне нужно, но он НЕ отображается как проанализированный текст в поле ввода, даже если это значение привязано к вводу.
Ниже приведена ссылка для кодов и окна для приведенного выше кода: песочница ссылка
Обновление :
Я попробовал одно из предложений из комментариев, используя событие нажатия клавиши.Это работает как шарм, пока вы не вставите строку со всеми недопустимыми символами.Есть ли способ обойти это?