如何使用表单规则在Vuetify中不允许使用空格?

我已经开始为我的代码进行一些验证,并使用文档示例作为我工作的基础。

我想为用户添加一些验证,而不仅仅是在填写表单时键入空格。文档处理“没有空格”,但是,您根本无法键入任何空格... 我希望对其进行修改,以便验证允许一个空格,以便可以键入适当的名称。

这是文档中的密码笔:https://codepen.io/pen/?&editable=true&editors=101

我的模板:


<div id="app">
  <v-app id="inspire">
    <v-form
      ref="form"
      v-model="valid"
      lazy-validation
    >
      <v-text-field
        v-model="name"
        :counter="10"
        :rules="nameRules"
        label="Name"
        required
      ></v-text-field>

      <v-text-field
        v-model="email"
        :rules="emailRules"
        label="E-mail"
        required
      ></v-text-field>

      <v-select
        v-model="select"
        :items="items"
        :rules="[v => !!v || 'Item is required']"
        label="Item"
        required
      ></v-select>

      <v-checkbox
        v-model="checkbox"
        :rules="[v => !!v || 'You must agree to continue!']"
        label="Do you agree?"
        required
      ></v-checkbox>

      <v-btn
        :disabled="!valid"
        color="success"
        class="mr-4"
        @click="validate"
      >
        Validate
      </v-btn>

      <v-btn
        color="error"
        class="mr-4"
        @click="reset"
      >
        Reset Form
      </v-btn>

      <v-btn
        color="warning"
        @click="resetValidation"
      >
        Reset Validation
      </v-btn>
    </v-form>
  </v-app>
</div>

我的脚本:

new Vue({
  el: '#app',vuetify: new Vuetify(),data: () => ({
    allowSpaces: false,match: 'Foobar',max: 0,model: 'Foobar',}),computed: {
    rules () {
      const rules = []

      if (this.max) {
        const rule =
          v => (v || '').length <= this.max ||
            `A maximum of ${this.max} characters is allowed`

        rules.push(rule)
      }

      if (!this.allowSpaces) {
        const rule =
          v => (v || '').indexOf(' ') < 0 ||
            'No spaces are allowed'

        rules.push(rule)
      }

      if (this.match) {
        const rule =
          v => (!!v && v) === this.match ||
            'Values do not match'

        rules.push(rule)
      }

      return rules
    },},watch: {
    match: 'validateField',max: 'validateField',model: 'validateField',methods: {
    validateField () {
      this.$refs.form.validate()
    },})

有什么想法吗?

fly4045 回答:如何使用表单规则在Vuetify中不允许使用空格?

遵循这样的规则怎么样?

const rule = 
  v => (v.split(' ').length <= 2) 
    || 'Only one space allowed'
,

您可以使用此:

rules: {
  blank: v => v && !!v.trim() || 'Value cannot be blank',}

您必须先检查是否有一个值,因为您不能在 undefined 上使用trim()方法。

,

如果要在字符串中允许空格,但不允许仅空格,则应在值上使用.trim().trim()将删除任何开头和结尾的空格,并返回剩余的内容。然后,一个简单的状态验证将起作用:

const nameRule = v => v.trim() || 'Name cannot be blank';

// " " => fails
// "Test User" => passes
,

你可以使用这个:

v => !(/[ ]/.test(v)) || 'no spaces allowed',
本文链接:https://www.f2er.com/3151287.html

大家都在问