Сделал фильтр для фильтрации ввода чисел, но чего-то не хватает. Подскажите, почему не работает фильтр в поле input.
На странице он нормально работает:
<form action="" id="calc">
<input type="text" v-model="test" style="text-align: right">
<p>Model value : {{ test | numFilter }}</p>
</form>
Vue.filter('numFilter', function (value) {
return value.replace(/[^\d.]*/g, '')
.replace(/([.])[.]+/g, '$1')
.replace(/^[^\d]*(\d+([.]\d{0,5})?).*$/g, '$1');
})
var app = new Vue({
el: '#calc',
data: {
test: ''
}
});
Ссылка на codepen
Когда пытаюсь применить его к полю input, даже поле не выводиться:
<form action="" id="calc">
<input type="text" v-model="test | numFilter" style="text-align: right">
</form>
Ссылка на codepen
Директива v-model предназначена для двусторонней связки элемента с переменной - вводите текст в поле и директива присваивает результат в переменную test. А вы указали "test | numFilter" выражение вместо имени переменной, это не работает.
Регулярное выражение вам не поможет, вам нужно создать свою пользовательскую директиву, которую нужно повесить на input для обрабатывания ввода.
Пример посмотрите здесь
Пример не является решением, только описывает способ.
Или же можно использовать уже готовый компонент: https://www.npmjs.com/package/vue-input-number
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости