首页 > 编程语言 >微信小程序:获取不到表单数据

微信小程序:获取不到表单数据

时间:2023-09-22 16:24:12浏览次数:29  
标签:form 微信 price material 表单 获取 data

今天碰到了一件让我怀疑人生的事情:获取不到表单的数据,但是productName能获取到数据,其他的都获取不到数据,而且他们的写法一模一样。

<view class="contain"  style="margin-bottom: 200rpx;">
        <form bindsubmit="formSubmit">
            <view class="row2" style="height: 100rpx">
                <view class="left2">
                    <label><span style="color: red;">*</span>产品名称:</label>
                </view>
                <view class="right2">
                    <input placeholder="请输入产品名称" name="productName" value="{{material.productName}}"/>
                </view>
            </view>
            <view class="row2" style="height: 100rpx">
                <view class="left2">
                    <label>产品价格:</label>
                </view>
                <view class="right2">
            <input placeholder="请输入产品价格" name="price" value="{{material.price}}"/>
                </view>
            </view>
            <view class="row2" style="height: 100rpx">
                <view class="left2">
                    <label>适用年龄:</label>
                </view>
                <view class="right2">
                    <input placeholder="请输入适用年龄" name="suitableAge" value="{{material.suitableAge}}"/>
                </view>
            </view>
            <view class="row2" style="height: 100rpx">
                <view class="left2">
                    <label>产品规格:</label>
                </view>
                <view class="right2">
                    <input placeholder="请输入产品规格" name="productSpec" value="{{material.productSpec}}"/>
                </view>
            </view>
            <view class="row2" style="align-items: flex-start;height: 200rpx;">
                <view class="left2">
                    <label>使用方法:</label>
                </view>
                <view class="right2">
                    <textarea placeholder="请输入使用方法" name="useMethod" value="{{material.useMethod}}"/>
                </view>
            </view>
            
            <view class="button-view">
                <!-- <text>保      存</text> -->
                <button size="default" form-type="submit" style="width: 100%;">保存</button>
            </view>
        </form>

根据网上说得如下注意事项都满足,但是就是获取不到数据。

1、所有的input、textarea、button全部包含在form表单元素里。

2、button 必须有form-type="submit" 这个属性。

3、form 必须有提交事件 即bindsubmit="back_houtai"。

4、通过 name属性取值,name名称不可重复。

表单中输入如下内容:

formSubmit函数如下:

formSubmit: function(e) {
    console.log(e)
  console.log(this.data.material)
  this.setData({
    form : e.detail.value,
    'form.price': this.data.material.price,
    'form.suitableAge': this.data.material.suitableAge,
    'form.productSpec': this.data.material.productSpec,
    'form.useMethod': this.data.material.useMethod,
    'form.productionLicence': this.data.material.productionLicence,
    'form.registrationNum': this.data.material.registrationNum
  })
}

结果:

后来发现,原来是material对象中的属性都是null,如下所示:

 刚开始打印e的时候,表单中的数据是能获取到的,但是由于后面使用了this.setData方法,导致将material对象中值为null的属性将表单中的值进行了覆盖。

解决办法:注释掉赋值的代码

formSubmit: function(e) {
    console.log(e)
  console.log(this.data.material)
  this.setData({
    form : e.detail.value,
    // 'form.price': this.data.material.price,
    // 'form.suitableAge': this.data.material.suitableAge,
    // 'form.productSpec': this.data.material.productSpec,
    // 'form.useMethod': this.data.material.useMethod,
    // 'form.productionLicence': this.data.material.productionLicence,
    // 'form.registrationNum': this.data.material.registrationNum
  })
}

这里有一个误区:以为表单中的value="{{material.price}}"就是将数据绑定到material对象中,但是实际上material对象的值为空的。

但是还有一点我不明白:为什么在this.setData中给form对象赋值会影响e中的属性值。

 

标签:form,微信,price,material,表单,获取,data
From: https://www.cnblogs.com/zwh0910/p/17630910.html

相关文章

  • 微信小程序全局变量(globalData)和缓存(StorageSync)的区别和用法
    globalData和storage的区别一、app.globalData是全局变量,下次进入的时候,就要重新获取,一般用于:1、保存一些可能涉及安全类的数据,例如资源类,每次需要很准确的,就建议用全局变量。2、全局变量每次关闭小程序重新打开的时候,都会进行初始化更新。二、缓存(StorageSync)本地存储,storage......
  • 企业微信机器人Javascript调用例子
    constkey=""constoWX_URL='https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key='+key;constsent_msg={'msgtype':'text','text':{......
  • selenium自动化测试-获取黄金实时价格
    最近黄金比较火爆,想要获取黄金实时价格,方便后续监控预警价格,一般实时刷新的网页数据都是动态加载的,需要用到selenium自动化测试获取动态页面数据。昨天学会了获取动态网页小说内容,同理也可以获取动态网页的黄金实时价格。第一步:先确定目标网址网上随便百度一下黄金实时价格: ......
  • ABAP-直接取表获取特性值
    1SELECTausp~objek,2cabn~atnam,3cabn~atfor,"数据类型4cabn~msehi,"单位5cabn~atint,"间隔值6ausp~atwrt,"char特性值7ausp~atflv,"num特性值从8ausp~atflb"num间隔特性值......
  • "最佳选择:独立私有部署的智能AI客服系统,适用于商城客服、公众号小程序客服和企业微信
    唯一客服系统推荐随着互联网的迅猛发展,越来越多的企业开始意识到提供良好的客户服务对于业务的重要性。而一个高效、多功能的在线客服系统成为了现代企业不可或缺的一部分。在此,我向大家推荐一款功能强大、易于使用的唯一客服系统——gofly.v1kf.com。以下将为您介绍该系统的一......
  • "强大的在线客服系统解决方案,网站客服源码下载,微信客服一键接入,私有部署可定制,在线客
    在线客服系统的重要性及推荐使用Gofly.v1kf.com在现代商务环境中,提供高质量的客户服务是企业获得成功的关键之一。随着互联网的快速发展,越来越多的企业认识到,拥有一个高效的在线客服系统对于与客户进行快速、便捷的沟通和解决问题至关重要。在选择适合自己企业的在线客服系统时,需......
  • 提供最好用的在线客服系统源码下载,支持独立私有部署,适用于网站、微信、公众号小程序和
    唯一客服系统推荐:gofly.v1kf.com在当今资讯爆炸的时代,对于企业来说,提供良好的客户服务已经成为了一项不可或缺的竞争优势。而在线客服系统无疑成为了企业与客户之间进行沟通和交流的重要工具。本文将向您推荐一款功能强大、易于使用且高度灵活的唯一客服系统——gofly.v1kf.com。......
  • 如何用laravel框架封装微信支付和支付宝支付?
    在Laravel框架中封装微信支付和支付宝支付通常需要使用相应的扩展包(Packages),这些扩展包可以帮助您与微信支付和支付宝支付的API进行交互,简化了整个支付集成过程。以下是在Laravel中封装微信支付和支付宝支付的一般步骤:封装微信支付:安装扩展包:首先,您需要在Laravel项目中安装适用于微......
  • 获取任意时间的某日期
    今天刷哔哩哔哩无意中打开了投稿管理,发现上面显示着已加入哔哩哔哩1994天,看着上面的数字感觉到时间过了好快啊。心里顿时有个想法,想知道加入的这一天是某年某月某日,心想着翻开日历一下一下去翻,但是感觉这样实在是太笨了。我顿时想着写一个程序去判断一下1994天前是某年的哪一......
  • 一些H5对接微信JSSDK的问题记录
    这里给大家分享我在实际生活中总结出来的一些知识,希望对大家有所帮助一.SDK引入这里提供两套引入流程,一套是vue2.0及其他h5项目,一套是vue3.0的引入流程不懂的也可以看我之前的一篇详细流程记录--微信调用jssdk全流程详解1.js引入直接在你的页面里引入js文件就行<scriptsr......