Input Number — это специализированный компонент для ввода числовых значений с возможностью управления при помощи кнопок увеличения и уменьшения значения. Он обеспечивает удобный способ ввода чисел с ограничениями, форматированием и обработкой событий.
Для использования компонента необходимо импортировать его из библиотеки Element Plus:
import { ElInputNumber } from 'element-plus';
В шаблоне Vue компонент используется следующим образом:
<el-input-number v-model="value" :min="1" :max="10" :step="1"></el-input-number>
export default {
data() {
return {
value: 1
};
}
};
Ключевые свойства:
v-model — двустороннее связывание с переменной.min — минимальное значение.max — максимальное значение.step — шаг изменения значения при клике на
стрелки.Step позволяет задать величину изменения при использовании стрелок:
<el-input-number v-model="value" :min="0" :max="100" :step="5"></el-input-number>
Min и Max предотвращают выход значения за пределы допустимого диапазона:
<el-input-number v-model="value" :min="10" :max="50"></el-input-number>
При вводе значения вручную, которое выходит за пределы, оно автоматически корректируется до ближайшего допустимого.
Для чисел с плавающей запятой важны свойства:
precision — количество знаков после запятой.step-strictly — ограничение изменения только
шагом.<el-input-number
v-model="value"
:min="0"
:max="10"
:step="0.5"
:precision="2"
step-strictly>
</el-input-number>
В этом примере ввод возможен только кратный 0.5, а отображение числа будет с двумя знаками после запятой.
Компонент Input Number поддерживает несколько важных событий:
change — срабатывает при изменении значения.input — срабатывает при каждом вводе
пользователем.blur — срабатывает при потере фокуса.focus — срабатывает при получении фокуса.Пример обработки события change:
<el-input-number v-model="value" @change="handleChange"></el-input-number>
methods: {
handleChange(newValue) {
console.log('Новое значение:', newValue);
}
}
По умолчанию компонент отображает стрелки управления. Можно настроить
их видимость через controls:
<el-input-number v-model="value" :controls="false"></el-input-number>
Свойство controls-position управляет расположением
кнопок:
<el-input-number v-model="value" controls-position="right"></el-input-number>
Input Number удобно использовать в сочетании с
компонентом el-form для валидации:
<el-form :model="form">
<el-form-item label="Возраст" prop="age">
<el-input-number v-model="form.age" :min="1" :max="100"></el-input-number>
</el-form-item>
</el-form>
export default {
data() {
return {
form: {
age: 25
}
};
}
};
Можно использовать правила валидации через
el-form-item:
rules: {
age: [
{ required: true, message: 'Введите возраст', trigger: 'blur' },
{ type: 'number', min: 1, max: 100, message: 'Возраст должен быть от 1 до 100', trigger: 'blur' }
]
}
Компонент поддерживает навигацию через стрелки клавиатуры:
Можно отключить эту функциональность с помощью свойства
keyboard:
<el-input-number v-model="value" :keyboard="false"></el-input-number>
Все свойства можно изменять динамически через реактивные данные:
<el-input-number
v-model="value"
:min="dynamicMin"
:max="dynamicMax"
:step="dynamicStep">
</el-input-number>
data() {
return {
value: 5,
dynamicMin: 1,
dynamicMax: 20,
dynamicStep: 2
};
}
Изменение dynamicMin, dynamicMax или
dynamicStep моментально отражается на поведении
компонента.
Input Number наследует стили Element Plus, но можно изменять внешний вид через CSS-переменные:
.el-input-number .el-input__inner {
border-color: #409EFF;
border-radius: 8px;
}
.el-input-number .el-input-number__decrease,
.el-input-number .el-input-number__increase {
background-color: #f0f9ff;
}
Также возможно добавление слотов для кастомных кнопок и элементов управления, хотя в большинстве случаев стандартных настроек достаточно.
Компонент хорошо сочетается с el-slider,
el-form, el-button для создания интерактивных
интерфейсов, где число можно вводить и регулировать несколькими
способами. Например, использование Input Number для
управления диапазоном:
<el-slider v-model="value" :min="0" :max="100"></el-slider>
<el-input-number v-model="value" :min="0" :max="100"></el-input-number>
Взаимосвязь через общий v-model обеспечивает
синхронизацию между ползунком и числовым вводом.
Эти возможности делают компонент Input Number гибким инструментом для точного и удобного ввода числовых данных в интерфейсах на Vue с библиотекой Element Plus.