【问题标题】:Vuelidate date input fieldVuelidate 日期输入字段
【发布时间】:2018-05-19 14:19:12
【问题描述】:

我希望有人可以向我澄清,如何在验证 Date 对象时正确使用 Vuelidate。我想使用当前日期作为最小日期,所以如果用户稍后输入日期,则会显示错误。

我有一个例子:https://jsfiddle.net/cheslavcc/fns8eh0f/1/

Vue.use(window.vuelidate.default)
const { required, minValue } = window.validators

new Vue({
  el: "#app",
  data: {
    text: ''
  },
  validations: {
    text: {
        minValue: minValue(moment(new Date(), 'DD.MM.YYYY').format('DD.MM.YYYY')),
    }
  }
})

我使用 Moment.js 作为日期格式化程序,以及来自官方 Vuelidate 文档的 minValue:https://monterail.github.io/vuelidate/#sub-builtin-validators

任何帮助表示赞赏,非常感谢!

【问题讨论】:

    标签: vuejs2 momentjs vuelidate


    【解决方案1】:

    您可以定义自定义验证器:

    Vue.use(window.vuelidate.default)
    const { required, minValue } = window.validators
    
    const currentDate = moment(new Date()).startOf('day')
    const minDate = window.vuelidate.withParams({minDate: currentDate.format('DD.MM.YYYY')}, value => moment(value, 'DD.MM.YYYY', true).isSameOrAfter(currentDate))
    
    new Vue({
    	el: "#app",
      data: {
      	text: ''
      },
      validations: {
      	text: {
    			minDate
        }
      }
    })
    input {
      border: 1px solid silver;
      border-radius: 4px;
      background: white;
      padding: 5px 10px;
    }
    
    .error {
      border-color: red;
      background: #FDD;
    }
    
    .error:focus {
      outline-color: #F99;
    }
    
    .valid {
      border-color: #5A5;
      background: #EFE;
    }
    
    .valid:focus {
      outline-color: #8E8;
    }
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>
    <script src="https://unpkg.com/vuelidate/dist/validators.min.js"></script>
    <script src="https://unpkg.com/vuelidate/dist/vuelidate.min.js"></script>
    <div id="app">
      <input type="text" v-model="text"
        v-on:input="$v.text.$touch"
        v-bind:class="{error: $v.text.$error, valid: $v.text.$dirty && !$v.text.$invalid}"
      >
      <pre>{{ $v }}</pre>
      Text: {{ text }}
    </div>

    【讨论】:

      猜你喜欢
      • 2020-05-08
      • 2015-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-27
      • 2013-05-19
      • 1970-01-01
      相关资源
      最近更新 更多