Сделал фильтр для фильтрации ввода чисел, но чего-то не хватает. Подскажите, почему не работает фильтр в поле 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
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть код в котором при нажатии кнопки, слова "атрибут" заменяются на ***Что добавить в эту строку, чтобы заменялись "атрибут" и "Атрибут" слова?
Почему данный код приводит к возникновению ошибки?
Подскажите, какое API можно использовать для захвата видео в Safari
При наведении всплывает подсказка с текстом,все отлично работает но необходимо, чтобы весь блок с картинкой позади затемнялся, при всплывании...