微信小程序中关于textarea组件的坑

最近的一个项目是微信小程序,这个textarea真的是让人很难受啊,我先说一下我遇得到的坑:

1、在swiper里面使用了(我知道不建议用,但是没办法.....就是这种需求没办法),然后在两个swiper-item中放着两个textarea,这还只是测试数据,真的数据会更多,但是只有一个生效了,只有第一个生效了,第二个textarea开始,可以触发点击事件,但是不能弹出手机上的键盘了,然后我就放弃了微信自己的这个原生组件textarea(真的搞不了了),换了一个UI库里的textarea,是vant的小程序组件里的<van-fild type='textarea'></van-fild>,这样就实际的解决了我的第一个问题。

2、这个问题是很多人都遇到的问题,就是在滚动的时候,无论是swiper还是scroll滚动的时候,textarea里面的文字,无论是你输入的内容还是placeholder属性定义的值,都会出现卡顿,也就是页面滚动的时候,文字不跟着滚动,在原地不动,等滚动结束之后才消失,这样用户体验极差,查了各种方法,发现也没什么简单的方法解决,最后就是使用了替换

原理比较简单,在这textarea标签的后面有一个和他长的一样的view标签或者text标签,然后当textarea失焦的时候,切换标签,让textarea消失,让另一个view或者text标签显示,这样就可以解决这个问题了,当点击view或者text标签的时候,再切换回textarea。 

 

我是通过控制每一项里面的showTextArea这个属性来控制显示的,wx:if 和 wx:else就可以做到,主要是要让textarea中输入的值 能在view或者text中显示才行。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以在 textarea 的 bindinput 事件,获取用户输入的内容并存储到本地缓存,代码示例如下: ``` <textarea bindinput="onTextareaInput"></textarea> Page({ data: { textContent: '' }, onTextareaInput: function(e) { wx.setStorageSync('textareaContent', e.detail.value) }, onLoad: function() { const content = wx.getStorageSync('textareaContent') if (content) { this.setData({ textContent: content }) } } }) ``` 在代码,我们使用了 `wx.setStorageSync` 方法将用户输入的内容保存到本地缓存,然后在页面加载时使用 `wx.getStorageSync` 方法获取缓存的内容并显示在 textarea 。这样用户在下次进入页面时,就可以看到上次输入的内容了。 ### 回答2: 微信小程序textarea组件不支持自动保存功能,开发者需要通过编写代码实现这一功能。 实现自动保存的步骤如下: 1. 在textarea组件的bindinput事件编写事件处理函数。该事件在用户输入内容时触发。 2. 在事件处理函数获取用户输入的内容,并将其保存在小程序的缓存或数据库。 3. 当小程序再次打开或刷新时,从缓存或数据库读取保存的内容,并将其显示在textarea组件。 下面是一个示例代码,实现了自动保存功能: ``` // 在小程序页面的js文件编写以下代码 Page({ data: { inputValue: '', // textarea组件的初始值 }, onLoad: function () { // 从缓存或数据库读取保存的内容 var savedValue = wx.getStorageSync('saved_text'); if (savedValue) { this.setData({ inputValue: savedValue, }); } }, bindTextAreaInput: function (event) { // 获取用户输入的内容 var value = event.detail.value; // 将用户输入的内容保存在缓存或数据库 wx.setStorageSync('saved_text', value); } }) ``` 在以上代码,我们通过bindinput事件和bindTextAreaInput方法实现了自动保存功能。在页面加载时,从缓存读取保存的内容并显示在textarea组件。在用户输入内容时,将内容保存在缓存。 当用户再次打开或刷新小程序时,会自动从缓存读取保存的内容并显示到textarea组件,实现了自动保存的功能。 ### 回答3: 微信小程序textarea组件是一个用于输入多行文本的输入框,而自动保存则可以实现用户在输入文本时,自动将其保存起来,以免数据丢失。 实现自动保存的方法有很多,下面我来介绍两种常用的实现方式。 第一种方式是监听textarea的输入事件,在用户输入文本时即时将其保存。我们可以通过在textarea组件上绑定input事件,然后在事件的回调函数获取到用户当前输入的文本内容,再将其保存到本地缓存或者服务器。这样,即使用户关闭了小程序,下次再打开时仍然可以恢复之前输入过的文本。 第二种方式是利用小程序的生命周期函数,在小程序的onHide事件保存用户输入的文本。当用户离开当前页面时,onHide事件会被触发,我们可以在该事件的回调函数获取textarea的文本内容,并进行保存。这样,在用户下次进入页面时,我们可以在onShow事件将之前保存的文本内容回显出来。 无论选择哪种方式,我们都可以使用小程序提供的本地缓存功能来保存用户输入的文本数据。在使用本地缓存时,我们可以通过wx.setStorage函数将数据保存到本地,而在需要恢复数据时,则可以使用wx.getStorage函数来获取之前保存的数据。 综上所述,利用前述的实现方式,我们可以很方便地在微信小程序textarea组件实现自动保存功能,让用户的输入数据不会丢失,提升用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值