vueComponent / ant-design-vue

🌈 An enterprise-class UI components based on Ant Design and Vue. 🐜
https://antdv.com/
Other
20.27k stars 3.79k forks source link

Textarea AutoComplete wrapped when selecting options by the Enter key #7018

Closed hmilin closed 10 months ago

hmilin commented 1 year ago

Version

4.0.1

Environment

Windows, Chrome latest, Vue latest

Reproduction link

https://antdv.com/components/auto-complete#components-auto-complete-demo-custom

Steps to reproduce

  1. type any character
  2. select any option and press the enter key

What is expected?

should not wrapped. Similar to Antd: https://ant.design/~demos/auto-complete-demo-custom

What is actually happening?

wrapped when selecting options by the Enter key

selicens commented 1 year ago
  <a-auto-complete
    v-model:value="value"
    :options="options"
    style="width: 200px"
    @search="handleSearch"
    @select="onSelect"
  >
    <a-textarea
      placeholder="input here"
      class="custom"
      style="height: 50px"
      @keypress="handleKeyPress"
      @press-enter="e => e.preventDefault()"
    />
  </a-auto-complete>

增加一行@press-enter="e => e.preventDefault()"即可解决

hmilin commented 1 year ago
  <a-auto-complete
    v-model:value="value"
    :options="options"
    style="width: 200px"
    @search="handleSearch"
    @select="onSelect"
  >
    <a-textarea
      placeholder="input here"
      class="custom"
      style="height: 50px"
      @keypress="handleKeyPress"
      @press-enter="e => e.preventDefault()"
    />
  </a-auto-complete>

增加一行@press-enter="e => e.preventDefault()"即可解决

会导致textarea本身的换行功能用不了

kovsu commented 1 year ago

2.x 没有问题 3.x 版本开始有这个问题

😫 找半天没找到到底是哪里的问题

DesignHhuang commented 1 year ago

这个组件逻辑上是没有问题的,原理上你敲了回车,textarea上会切换到第二行,然后下面options中也会更新加上enter(也就是空格,类似下图) image 然后在你选择的时候,如果有回车的option(再options中其实是空车)被选中的话,回填到textarea中的时候会带上回车(也就是空行)的。简单来说按回车就是输入,输入就会重新选择提示,就是这么个逻辑。 如果不允许空格输入的话,就使用 @selicens 的方式就可以了。 @kovsu 2.x 没有问题是因为在textarea中是不能输入enter的,所以options中没有空格。但是如果在textarea中输入空格的话,options中就会出现enter的效果,选中的话文本在textarea中就会换行。

kovsu commented 1 year ago

我觉得不合理。有这个选择框的时候,按回车就应该只有选择而不是还有一个输入。🤔

DesignHhuang commented 1 year ago

我觉得不合理。有这个选择框的时候,按回车就应该只有选择而不是还有一个输入。🤔

如果是这个逻辑的话, @selicens 的方式就可以处理这个问题

DesignHhuang commented 1 year ago

我觉得不合理。有这个选择框的时候,按回车就应该只有选择而不是还有一个输入。🤔

如果是这个逻辑的话, @selicens 的方式就可以处理这个问题

目前的设计没有办法判断按enter是输入还是选择吧,可以在select的open为true时,取消textarea的聚焦(也就是不让输入)。但是好像取消聚焦的话,select的open会变为false...

kovsu commented 1 year ago

我看了一下 antd,它的实现是没有问题的。

kovsu commented 1 year ago

先放着吧,一时半会儿也解决不了 😵‍💫

github-actions[bot] commented 10 months ago

This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 7 days

Hakityc commented 1 week ago

这个问题依然存在,目前有什么解决方法吗?

Hakityc commented 1 week ago

Clipchamp制作 可以看到,即使补全未展示时,按下回车也会选中第一项数据