vue 输入框maxlength不影响拼音输入
2024-05-23 11:00 法子 阅读(111) 评论(0) 编辑 收藏 举报直接设置 input 的 maxlength 会导致最后几个字无法用拼音输入,比如最大长度还剩两个字,我想输入'项目',当我拼音输入'xi'之后,后面的'angmu'是打不出的。
可以不设置 maxlength,而是用 this.$nextTick(() => {}) 在用户输入完之后,裁剪文字
<template> <view class="input-view"> <u-input v-model="value" type="textarea" :border="false" :clearable="false" :maxlength="9999" @input="handleInput" /> <view class="tip-view">{{ tipText }}</view> </view> </template> <script> export default { props: { text: { type: String, default: '' }, maxlength: { type: [String, Number], default: 5 } }, data () { return { value: '', }; }, computed: { tipText () { return `${this.value.length || 0}/${this.maxlength}`; } }, watch: { text: { handler (val) { this.value = val }, immediate: true } }, methods: { handleInput (event) { // 直接给input设maxlength输入拼音的时候有影响 if (event.length > Number(this.maxlength)) { this.$nextTick(() => { this.value = event.substring(0, this.maxlength); this.$emit('update:text', this.value) }); } else { this.$emit('update:text', event) } } } }; </script> <style scoped lang="scss"> .input-view { .tip-view { margin-top: 20rpx; text-align: right; } } </style>
使用的时候
<template> <view class="input-view"> <LYFInput :text.sync="text" /> </view> </template> <script> export default { components: { LYFInput }, data () { return { text: 'abc', }; } } </script>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!