uniapp开发bug记录

项目场景:

uniapp开发过程中遇到的一些问题


一.uview plus

1.组件Textarea 文本域

问题描述

自动高度的使用,相关字段autoHeight,发现仅仅是设置autoHeight会有问题

官方示例代码
<up-textarea v-model="value3" placeholder="请输入内容" autoHeight ></up-textarea>

效果图:
在这里插入图片描述

原因分析:

由于up-textarea的默认高度是70,官方的示例代码只是加了autoHeight 的配置字段,但是并没有注意到默认高度,一旦文字过多,超过高度,文字就超出输入框了


解决方案:

提示:既然是由于没有设置高度导致,如果设置一个固定高度也不是很自由,那就设置一个height=“auto”,就完美解决了

// 解决方案代码
<up-textarea v-model="value3" placeholder="请输入内容" autoHeight height="auto" ></up-textarea>

效果图:
在这里插入图片描述

二. 搜索框的input焦点问题(pc端vue项目)

问题描述

最近在弄一个搜索输入框,当获取焦点的时候,需要下面展示一个历史搜索记录,当一切都很顺利的时候,开发到点击下面展示搜索内容的清空历史记录按钮的时候,由于默认行为,会使得input输入框失去焦点,并触发失去焦点事件相关的函数,达不到想要的效果

部分关键相关代码
//搜索输入框
<input class="search_input" v-model="data.keywords" @focus="handleFocusKeywords" @blur="handleBlurKeywords" @keyup.enter="search"/>
// 清除历史记录区域
<div class="clear" @click="clearSearchHistory">
   <el-icon><Delete /></el-icon>
   <span>Clear history</span>
</div>

输入框获取焦点效果图1:

  • 点击Clear history前(input有焦点,下面的盒子展示出来)

    在这里插入图片描述

错误效果图2:

  • 点击Clear history后(input失去焦点,触发了blur事件函数,相关逻辑会使得下面的盒子隐藏)

在这里插入图片描述
正确效果图3:

  • 点击Clear history后(input没有失去焦点,不会触发了blur事件函数,相关逻辑也不会运行,下面的盒子存在)

在这里插入图片描述

原因分析:

点击Clear history后,由于默认行为,导致触发了input框失去焦点的行为,同时触发失去焦点事件,运行相关逻辑,出现了图2
的错误效果

解决方案:

点击Clear history后,阻止默认行为就行,那么加在哪个地方呢,第一想法是用@click.prevent的指令,但是并没有生效,依旧会触发,研究了一会儿解决代码如下:

部分关键相关代码
//搜索输入框
<input class="search_input" v-model="data.keywords" @focus="handleFocusKeywords" @blur="handleBlurKeywords" @keyup.enter="search"/>
// 清除历史记录区域
<div class="clear" @click="clearSearchHistory" @mousedown="preventBlur">
   <el-icon><Delete /></el-icon>
   <span>Clear history</span>
</div>
// 加入一个mousedown的行为事件来单独阻止默认行为,这样点击clear区域,不会触发input的失去焦点行为
const preventBlur = (e) => {
  e.preventDefault();
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值