Есть несколько способов сделать это: вы можете прослушать событие нажатия клавиши на входе, а затем проверить, является ли клавиша буквой или цифрой, используя регулярное выражение
<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