ant-design-vue中a-input使用keyup删除不如keydown

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ant-design-vue中a-input使用keyup删除不如keydown相关的知识,希望对你有一定的参考价值。

参考技术A 词根校验功能如下:使用div作为一个容器来存放所有的词根,所有的词根使用一个rootList数组进行v-for遍历生成一个个小的div,最后面跟一个input输入框。当输入框输入文本,点击回车或失焦或长时间未输入,将往rootList内push一个新词根。

需求:删除词根,之前只能通过点击每个词根尾部的x号进行删除。新加使用键盘的删除键来进行删除。

解决:input监听删除键事件,当input框内容为空的时候,删除前一个词根,即可达到通过键盘来删除词根的目的。

@keyup.delete实际上对应的是两个键,一个是delete,一个是backspace。其中delete键对input没有任何影响,但backspace键会去删除input中的字符。

或者改写delete键

问题:当input中只剩下一个字符的时候,点击删除键,就会把最后一个字符删除,同时会把前一个词根也删除掉。实际上想要的效果是把input内容删空后再次删才可删前面的词根。

发现:input的change事件和keyup.delete事件,先后顺序是先触发change,然后再触发keyup。这就导致上面的情况的发生,删除最后一个字符的时候,把前一个词根也跟着删了

在input的change事件中,可以通过event.inputType得知当前是添加文本还是删除文本等等。

https://developer.mozilla.org/zh-CN/docs/Web/API/InputEvent/inputType

一个 DOMString 对象,包含所做输入的类型。有许多可能的值,例如insertText、deleteContentBackward、insertFromPaste和formatBold。

当添加文本的时候,是insertText,删除文本的时候是deleteContentBackward

change事件有inputType,keyup没有inputType

判断如果是删除,且删除前是一个字符,删除后是0个字符,在keyup事件中去删除词根,这个想法不行。

最后的解决办法是:统一使用keydown事件,keydown早于keyup,不过要做个专门的判断是backspace键。

ant-design-vue 之form表单中label-col和wrapper-col使用

ant-design-vue 之form表单中label-col和wrapper-col使用

主要代码: 

:label-col="{ span: 5 }" :wrapper-col="{ span: 15 }"

demo:

<template>
    <div>
        <a-form :form="form" >

            <a-form-item label="计划名称" style="width: 100%" :label-col="{ span: 5 }" :wrapper-col="{ span: 15 }">
                <a-textarea placeholder="请输入"/>
            </a-form-item>

        </a-form>
    </div>
</template>
<script>

    /* 这是ant-design-vue */
    import Vue from vue
    import Antd, { message,Select } from ant-design-vue  //这是ant-design-vue
    import ant-design-vue/dist/antd.css
    Vue.use(Antd);
    /* 这是ant-design-vue */


    export default {};
</script>

<style scoped>

</style>

 

 

以上是关于ant-design-vue中a-input使用keyup删除不如keydown的主要内容,如果未能解决你的问题,请参考以下文章

vue3安装使用ant-design-vue

Ant-design-vue中如何实现图片上传?

Ant-design-vue中如何实现图片上传?

Ant-design-vue中如何实现图片上传?

ant-design-vue 使用问题记录

ant-design-vue 之form表单中label-col和wrapper-col使用