当前位置: 主页 > 建站知识 > 小程序

微信小程序 清空表单-微信小程序 表单提交

发布时间:2023-01-22 07:17   浏览次数:次   作者:佚名

微信小程序公测已经有一段时间了,但是里面的坑一个接一个被踩,心够累的。 这篇文章讨论了 textarea 组件中的错误。 (注:本文提到的bug至少在2016-12-1还存在)

上一篇:微信小程序踏坑之旅一、wx.request和wx.uploadFile

测试期间使用:

在日常的开发过程中,textarea的使用频率相当高,很多时候需要使用Javascript来控制它的一些行为。 本文就举个例子来说说大家在开发中可能遇到的这个。 坑。

需求:清除textarea组件的内容。

需求这么简单微信小程序 清空表单,实现起来也这么简单(笑.jpg),有童鞋立马举手回答,并提出了解决方案。

选项 1 缺点

??的确,选项1完全可以清空textarea组件,但不够灵活。

场景 2

也有童鞋回答可以使用数据绑定功能,将textarea组件的value属性绑定到一个data属性上,这样当你想清空textarea组件的内容时,只需要赋一个空字符串值即可到绑定数据属性。 能。

??,上面的童鞋说到点子上了。 和很多流行的MVVM框架(比如vue、ng1、ng2等)一样,小程序也有数据绑定的功能(moving.jpg),所以下面就用这个方法来完成这个简单的需求。

(吐槽:不过比起那些框架,我觉得这个小程序的数据绑定功能用起来有点废了,可能被Vue惯坏了)

对比图

方案已经说了,不过既然说是踩坑之旅,那肯定没有方案说的那么简单,没有坑就丢人了。 下面将提供4个动画微信小程序 清空表单,都是按照方案2处理的,请仔细对比。

在微信网页开发工具中,所有实现方法:

你会看见:

方法一、textarea组件的内容无法清空

微信小程序 清空表单_微信小程序 表单提交_微信小程序表单

方法二,可以清空内容

方法三,可以清空内容

上面说了方法二和方法三都可以清除内容,那为什么会有方法三这么“搞笑”的写法呢? 因为方法2的写法在手机端预览的时候会有bug,挺搞笑的bug,具体可以看三四运行图。

ondevtools.gif

手机预览时,方法一:

与开发工具运行时的情况一样,无法清除。

1.gif

手机预览时,方法二:

这个是bug,清除是没有问题的,但是童鞋们可以注意一下textarea组件placeholder的变化。 清除后,它会暂时没有。 为了解决这个bug,有一种写法3。

2.gif

手机预览时,方法三:

添加了一个 setTimeout,并在 300 毫秒后将绑定属性设置为空字符串。

3.gif

看到这里,相信童鞋们知道是怎么回事了,又到了吐槽微信开发组的时候了,赶紧修复这个莫名其妙的bug吧!

代码

微信小程序 清空表单_微信小程序表单_微信小程序 表单提交

有的人不能说代码不厚道,其实我是想让大家去我的仓库看看,因为我可以轻松star,哈哈哈。

处理页面的js,test.js

Page({
  data: {
    inputContent: ''
  },
  clearInputContent(e) {
    const mode = parseInt(e.target.dataset.mode)
    switch (mode) {
      case 1:
        this.setData({
          inputContent: ''
        })
        break;

微信小程序表单_微信小程序 清空表单_微信小程序 表单提交

case 2: this.setData({ inputContent: ' ' }) this.setData({ inputContent: '' }) break; case 3: this.setData({ inputContent: ' ' }) setTimeout(_ => { this.setData({ inputContent: ''

微信小程序 清空表单_微信小程序 表单提交_微信小程序表单

}) }, 300) break; } } })

页面用户界面,test.wxml


    textarea 组件 bug