Как разрешить на Vue Js только цифры и буквы? - PullRequest
0 голосов
/ 27 мая 2020

Я хочу, чтобы в поле name разрешались только цифры и буквы, а в поле number разрешались только числа.

Как мне это сделать, где я могу увидеть do c где объяснить это, как мой вопрос?

const app = new Vue({
  el: '#app',
  data: {
    name: null,
    number: null
  },
  methods: {
    checkForm: function (e) {
      if (this.name) {
      return true;
      }
      if (!this.name) {
        console.log("Required");
      }
      if (this.number) {
      return true;
      }
      if (!this.number) {
        console.log("Required");
      }
      e.preventDefault();
    }
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<form id="app" @submit="checkForm" method="post" novalidate="true">
  <p>
    <label for="name">Name</label>
    <input id="name" v-model="name" type="text" name="name">
    <input id="number" v-model="number" type="text" name="number">
  </p>
    <input type="submit" value="Submit">
</form>

Спасибо!

1 Ответ

1 голос
/ 27 мая 2020

Есть несколько способов сделать это: вы можете прослушать событие нажатия клавиши на входе, а затем проверить, является ли клавиша буквой или цифрой, используя регулярное выражение

<template>
  <div id="app">
    Text & Number Only
    <input type="text" v-model="name" v-on:keypress="isLetterOrNumber($event)">
  </div>
</template>

<script>
export default {
    data: () => ({
        name: ""
    }),
    methods: {
        isLetterOrNumber(e) {
            let char = String.fromCharCode(e.keyCode);
            if (/^[A-Za-z0-9]+$/.test(char)) return true;
            else e.preventDefault();
        }
    }
}
</script>

, или вы можете использовать вычисленные свойства, чтобы проверить, является ли входное значение представляет собой только букву или цифру или нет, таким образом, пользователь все равно может вводить что-либо, кроме цифры и буквы, но будет отображаться ошибка

<template>
  <div id="app">
    Text & Number Only (show error):
    <input type="text" v-model="name">
    <div v-if="!nameValid">NOT VALID!!!</div>
  </div>
</template>

<script>
export default {
  data: () => ({
    name: ""
  }),
  computed: {
    nameValid() {
      return /^[A-Za-z0-9]+$/.test(this.name);
    }
  }
};
</script>

Пример здесь: https://codesandbox.io/s/cranky-meadow-0dns8?file= / src / App. vue: 0-651

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...