vue3 directive input限制字符长度,及更新v-model

164 阅读1分钟
<input v-model="username" v-limit-num="20" placeholder=请输入用户名"" />
/**
 * 此处 mounted + input 事件
 * 原因:用updated 生命周期,不能及时更新value
 */
App.directive('limit-num', {
    mounted(el, { value = 100 }, vnode) {
        el.addEventListener('input', function () {
            if (el.value.length > value) {
                el.value = el.value.substring(0, value);
            }
        });
    }
});