Skip to content

首字母大写

请创建一个自定义的修饰符 capitalize,它会自动将 v-model 绑定输入的字符串值首字母转为大写:

vue
<script setup></script>

<template>
  <input type="text" v-model.capitalize="" />
</template>

解答

ts
 <script setup>
 // 导入 ref 和 vModelText 函数
 import { ref, vModelText } from 'vue';

 // 定义一个响应式变量 value
 const value = ref('');
 // 使用 vModelText.beforeUpdate 指令,在更新 value 之前对输入值进行操作
 vModelText.beforeUpdate = (el, binding) => {
   // 如果输入值不为空且包含 capitalize 修饰符,则将输入值的首字母转换为大写
   if (el.value && binding.modifiers.capitalize) {
     el.value = el.value.charAt(0).toUpperCase() + el.value.slice(1);
   }
 };
</script>
<template>
 <!-- 创建一个文本输入框,使用 v-model.capitalize 指令将 value 变量的值绑定到输入框的值,并在更新 value 之前对输入值进行操作 -->
 <input type="text" v-model.capitalize="value" />
</template>