微信小程序weUI <mp-form>提交清空input框的值

本文档描述了在使用微信小程序中的mp-form组件时遇到的问题,即在提交表单后无法清空input输入框的内容。作者通过尝试直接设置formData的值为空无效,最终找到了解决方案,即为每个input绑定model:value,并在提交后分别设置这些值为空,从而成功清空input。此外,代码中还展示了如何使用mp-toptips显示错误信息和mp-form的validate方法进行表单验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<mp-form id="form" class="cont_add_a1" rules="{{rules}}" models="{{formData}}">

当使用mp-form使用按钮提交,数据通过models绑定,点击提交的时候需要清空input框里的值,试过将formData的值置为空,没有效果

最后想到的办法是,将每个input使用model:value绑定数据,点击按钮之后通过将值设为空来清除input框中的内容

<mp-toptips msg="{{error}}" type="error" show="{{error}}"></mp-toptips>
    <mp-form id="form"  class="cont_add_a1" rules="{{rules}}" models="{{formData}}">
        <mp-cells class="my-cells">
            <mp-cell prop="name"  class="a1_item" title="姓名" >
                <input bindinput="formInputChange" model:value="{{name}}" data-field="name" class="weui-input" placeholder="请输入姓名"/>
            </mp-cell>
            <mp-cell prop="phone" class="a1_item" title="手机号码" > 
                <input bindinput="formInputChange" model:value="{{phone}}" data-field="phone" class="weui-input" placeholder="请输入手机号码"/>
            </mp-cell>
        </mp-cells>

        <!--  -->
        <view slot="button">
            <button class="btn" style="margin: 88rpx auto;" bindtap="submitForm">提交</button>
        </view>
    </mp-form>
	 submitForm() {
        console.log(this.data.formData)
        this.selectComponent('#form').validate((valid, errors) => {
            console.log('valid', valid, errors)
            if (!valid) {
                const firstError = Object.keys(errors)
                if (firstError.length) {
                    this.setData({
                        error: errors[firstError[0]].message
                    })

                }
            } else {
                // 提交资料
                this.setData({
                    [`formData.phone`]: '',
                    name: '',
                    phone: ''
                })
				console.log('已清空')
            }
        })
        // this.selectComponent('#form').validateField('mobile', (valid, errors) => {
        //     console.log('valid', valid, errors)
        // })
    },    
下面是使用 jQuery 实现下拉刷新的代码示例: HTML 结构: ```html <div id="tab3" class="weui-tab__bd-item"> <!-- 搜索 --> <div class="weui-search-bar weui-search-bar_focusing" id="searchBar"> <form class="weui-search-bar__form"> <div class="weui-search-bar__box"> <i class="weui-icon-search"></i> <input type="search" class="weui-search-bar__input" id="searchInput" placeholder="搜索" required=""> <a href="javascript:" class="weui-icon-clear" id="searchClear"></a> </div> <label class="weui-search-bar__label" id="searchText"> <i class="weui-icon-search"></i> <span>搜索</span> </label> </form> <a href="javascript:" class="weui-search-bar__cancel-btn" id="searchCancel">取消</a> </div> <!-- 下拉刷新 --> <div class="pull-to-refresh-content"> <div class="pull-to-refresh-layer"> <div class="preloader"></div> <div class="pull-to-refresh-arrow"></div> </div> <!-- 列表内容 --> <ul class="list"></ul> </div> </div> ``` CSS 样式: ```css /* 下拉刷新 */ .pull-to-refresh-content { position: relative; overflow: auto; } .pull-to-refresh-layer { position: absolute; top: -40px; width: 100%; height: 40px; text-align: center; line-height: 40px; color: #999; font-size: 14px; } .pull-to-refresh-arrow { display: inline-block; vertical-align: middle; margin-right: 10px; width: 10px; height: 10px; border: 1px solid #999; border-top: none; border-right: none; transform: rotate(-45deg); } .pull-to-refresh-layer .preloader { display: inline-block; vertical-align: middle; margin-right: 10px; } /* 列表 */ .list { margin: 0; padding: 0; list-style: none; } .list li { padding: 10px; border-bottom: 1px solid #ccc; } ``` JavaScript 代码: ```javascript $(function() { // 获取下拉刷新区域和列表区域 var $ptrContent = $('.pull-to-refresh-content'); var $list = $('.list'); // 初始化下拉刷新 $ptrContent.on('ptr:refresh', function(e) { // 模拟 AJAX 请求 setTimeout(function() { // 生成新的列表项 var newItem = '<li>新的列表项</li>'; // 将新的列表项插入到列表中 $list.prepend(newItem); // 结束下拉刷新 $.pullToRefreshDone($ptrContent); }, 2000); }); // 初始化下拉刷新插件 $ptrContent.ptr({ // 修改默认的下拉刷新文字 pullText: '下拉刷新', releaseText: '释放刷新', refreshText: '正在刷新...', // 修改默认的下拉刷新图标 iconArrow: '<div class="pull-to-refresh-arrow"></div>', iconRefreshing: '<div class="preloader"></div>', // 修改默认的下拉刷新触发距离 distance: 50 }); }); ``` 注意:上面的代码使用了第三方的下拉刷新插件 `pull-to-refresh-js`,需要先引入该插件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值