Есть ли в Vuetify конкретный компонент ввода чисел?

Я видел компонент в Element UI для управления количеством элементов, он здесь:

https://element.eleme.io/#/en-US/component/input-number

Я бы хотел использовать что-то подобное в Vuetify, но я не могу найти аналогичный компонент или даже похожий пример стиля в Material Design. Как лучше всего этого добиться?

Ну это просто поле ввода с двумя кнопками ...

Lars Beck 03.12.2018 08:39
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
44
1
93 020
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Обновлять: этот ответ относится к версии 1 Vuetify, ответ Юкашимы Хуксая верен для более новых версий Vuetify.

Установка атрибута type на type = "number" - лучший способ.

Оригинал:

Вы можете просто сделать свой собственный:

new Vue({ 
  el: '#app',
  data () {
     return {
       foo: 0
     }
  },
  methods: {
    increment () {
      this.foo = parseInt(this.foo,10) + 1
    },
    decrement () {
      this.foo = parseInt(this.foo,10) - 1
    }
  }
})
<link href='https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons' rel = "stylesheet">
<link href = "https://cdn.jsdelivr.net/npm/vuetify/dist/vuetify.min.css" rel = "stylesheet">
<script src = "https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<script src = "https://cdn.jsdelivr.net/npm/vuetify/dist/vuetify.js"></script>

<div id = "app">
    <v-app>
      <v-content>
        <v-container>
          <v-text-field v-model = "foo" type = "number" label = "Number" append-outer-icon = "add" @click:append-outer = "increment" prepend-icon = "remove" @click:prepend = "decrement"></v-text-field>
        </v-container>
      </v-content>
    </v-app>
  </div>
type = "tel" может быть предпочтительнее: type = "number" привносит некоторые (вероятно, неожиданные) ограничения синтаксиса, которых, похоже, нет у tel. numeric, похоже, недоступен.
PotatoFarmer 09.04.2021 03:56

Код Vue vuetify используя: rules = "maxRules"

<template>
  <div>
    <v-text-field  v-model = "text1" :rules = "maxRules" label = "Credit Amount"></v-text-field>
  </div>
</template>

<script>

export default {
  data () {
    return {
      limit:500,
      maxRules: [
        (v)=> {
          if (this.text1 > this.limit) {
            return 'Error'
          }
        }
      ]
    }
  }
}
</script>

Да, есть:

<v-text-field
  v-model = "numberValue"
  hide-details
  single-line
  type = "number"
/>

Посмотрите документация по компонентам слайдера для рабочего примера.

Круто, если type = "number" вы даже получите кнопки вверх и вниз в правом конце

henon 26.05.2020 19:52

Ну, вроде как ... пока люди помнят, что вы все еще можете вводить нечисловые значения вручную.

Hexodus 25.08.2020 16:39

@Hexodus v-model.number может помочь в этом случае

yukashima huksay 07.09.2020 14:18

См. Ответ UncertaintyP для некоторых примечаний по директиве .number.

yukashima huksay 03.12.2020 10:51

в vuetify.js v2.2.22 для преобразования вашего <v-text-field> в номер нужно записать v-model.number

<v-text-field 
v-model.number = "foo" 
label = "Number" 
append-outer-icon = "add" 
@click:append-outer = "increment" 
prepend-icon = "remove" 
@click:prepend = "decrement">
</v-text-field>

type = "число" был удален

Это немного вводит в заблуждение. См. Ответ UncertaintyP ниже. v-model.number происходит от Vue, а не от Vuetify. type = "number" исходит из HTML, а не из Vue или Vuetify. vuejs.org/v2/guide/forms.html#number

tgf 26.11.2020 21:28

Кстати, v-model.number - хороший улов, спасибо!

funder7 08.03.2021 21:50

Здесь смешиваются некоторые концепции числового ввода.

  1. Я не вижу, чтобы type = "число" удалялся в 2.2.22 https://github.com/vuetifyjs/vuetify/compare/v2.2.21...v2.2.22 Также я вижу, что он отображается правильно, по крайней мере, в 2.3.10

  2. Поле ввода с атрибутом type = "number" будет обрабатываться по-разному в зависимости от браузера, ОС и настроек локали (например, я все еще могу вводить свободный текст в FF, но не в Chrome). Обычно на смартфонах раскладка клавиатуры меняется.

  3. v-model.number - это чисто директива для Vue. Как видите, внутри Vue просто пытается проанализировать ввод с помощью parseFloat и использует его в случае успеха - в противном случае это будет текст и обрабатываться как строка в Vue / JS. https://vuejs.org/v2/guide/forms.html#number

Другие вопросы по теме