只允许在输入中写入字母

时间:2021-05-30 20:34:26

标签: javascript vue.js vuejs2

我正在尝试在输入中只能写字母而不能写特殊字符或数字,现在我已经成功了,除非我写“`”或“´”它们继续被写。我怎样才能阻止它们出现?

这是我做的

https://codesandbox.io/s/kind-cannon-vccjb?file=/src/App.vue:0-699

1 个答案:

答案 0 :(得分:1)

你的代码对我来说似乎工作正常,但它只能处理键盘按下,粘贴时不起作用。
更好的方法是验证输入并在输入值随 @input 更改时修复它,因为您已经将结果绑定到 this.firstname

<template>
  <div id="app">
    Only letter
    <input type="text" v-model="firstName" @input="prueba" />
    <br />
  </div>
</template>

<script>
export default {
  name: "App",
  data: () => ({
    firstName: "",
  }),
  methods: {
    prueba() {
      //this will replace every non letter input with an empty string leading to removing it
      this.firstName = this.firstName.replaceAll(/[^a-zA-Z]/g, "");
      //you can also do your uppercase change here, no need to do it in update
      this.firstName = this.firstName.toUpperCase()
    },
  },
};
</script>

请注意,您也可以将两行合二为一,例如

this.firstName = this.firstName.replaceAll(/[^a-zA-Z]+/g, "").toUpperCase();