狗尾草joss
狗尾草joss
  • 发布:2021-01-21 13:52
  • 更新:2021-02-03 16:57
  • 阅读:1484

【报Bug】input在v-model没有失焦时,获取的值不对

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 10

HBuilderX类型: Alpha

HBuilderX版本号: 3.0.7

手机系统: Android

手机系统版本号: Android 10

手机厂商: OPPO

手机机型: PBCM30

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
<template>  
    <view class="content">  
        <view class="form">  
            <view><text>姓名</text><input v-model="form.name" /></view>  
            <view><text>性别</text><input v-model="form.sex" /></view>  
            <button @click="submit">提交</button>  
        </view>  
        <view class="list" v-for="(item, i) in list" :kes="i">  
            <view>{{item.name}}</view>  
            <view>{{item.sex}}</view>  
            <view>  
                <button class="btn" type="primary" @click="remove(item._id)">删除</button>  
                <button class="btn" type="default" @click="update(item._id)">更新</button>  
            </view>  
        </view>  
    </view>  
</template>  
<script>  
    export default {  
        data() {  
            return {  
                form: {  
                    name: '',  
                    sex: ''  
                },  
                list: {}  
            }  
        },  
        onLoad() {  
            this.getData()  
        },  
        methods: {  
            submit() {  
                console.log(JSON.stringify(this.form))  
                return  
                uniCloud.callFunction({  
                    name: 'addUser',  
                    data: this.form,  
                    success: (e) => {  
                        console.log(e.result)  
                        this.getData()  
                    }  
                })  
            },  
            getData() {  
                uniCloud.callFunction({  
                    name: 'getUser',  
                    success: (e) => {  
                        console.log(e.result)  
                        this.list = e.result.data  
                    }  
                })  
            },  
            remove(id) {  
                uniCloud.callFunction({  
                    name: 'remove',  
                    data: {  
                        'id': id  
                    },  
                    success: (e) => {  
                        console.log(e.result)  
                        this.getData()  
                    }  
                })  
            },  
            update(id) {  
                let data = {  
                    'id': id,  
                    'name': this.form.name,  
                    'sex': this.form.sex  
                }  
                uniCloud.callFunction({  
                    name: 'update',  
                    data: data,  
                    success: (e) => {  
                        console.log(e.result)  
                        this.getData()  
                    }  
                })  
            }  
        }  
    }  
</script>  
<style lang="scss" scoped>  
    input {  
        border: 1px solid #666;  
    }  
    .list {  
        display: flex;  
        justify-content: space-between;  
        align-items: center;  
    }  
    .btn {  
        width: 100px;  
        display: inline-block;  
    }  
</style>  

操作步骤:

上面代码,输入框输入,不失焦直接点击提交

预期结果:

返回输入完整的数据

实际结果:

没有实时获取input数据

bug描述:

在vue页面input数据绑定v-model,在输入框输入在没有失焦的情况下,点击提交,没有失焦的input绑定参数没有获取到输入后的值
在nvue和h5测试,都正确返回input实时数据,用手机运行不行

2021-01-21 13:52 负责人:无 分享
已邀请:

最佳回复

DCloud_UNI_GSQ

DCloud_UNI_GSQ

目前按钮点击事件早于 input 事件

临时解决方案:

submit 内自行延迟处理

狗尾草joss

狗尾草joss (作者)

还需要什么,Q我

狗尾草joss

狗尾草joss (作者)

木有人看看麽

DCloud_UNI_Anne

DCloud_UNI_Anne

未复现问题。仅这个设备出现问题吗?其他设备是否正常?

  • 狗尾草joss (作者)

    多个安卓机都复现了,下面有代码和录屏

    2021-01-22 17:57

  • DCloud_UNI_Anne

    回复 狗尾草joss: 用oppo R9m测的未复现,哪个机型必现?请说明复现设备具体信息,否则无法复现很难排查问题。

    2021-01-22 19:36

  • 狗尾草joss (作者)

    回复 DCloud_UNI_Anne: OPPO PBCM30必现,另外一个安卓找同事借的,不知道什么机型,一个老款华为

    2021-01-25 09:02

  • 狗尾草joss (作者)

    回复 DCloud_UNI_Anne: 我下面都录视频了,你们还要复现到什么程度;我想可能的原因:在输入法中文状态下是能监听到的,在英文状态下,输入的时候,输入框输入的英文下面有一条线,此时输入框没有监听到输入,然后点击提交,提交和失焦(英文字符被写入input)同时发生

    2021-01-25 09:07

  • DCloud_UNI_Anne

    回复 狗尾草joss: 什么输入法

    2021-01-26 17:11

  • 狗尾草joss (作者)

    回复 DCloud_UNI_Anne: 系统自带的输入法,搜狗输入法定制版

    2021-01-26 17:20

  • 狗尾草joss (作者)

    回复 DCloud_UNI_Anne: 刚在苹果测试也是一样,测试必现步骤:在输入框输入,输入框的文字存在下划线,说明此时还没有被输入进去,点击提交,输入的文字显示在输入框,然后打印出来的数据没有刚输入的东西

    2021-01-26 17:46

  • 狗尾草joss (作者)

    回复 DCloud_UNI_Anne:苹果示例:输入框选择中文输入,输入拼音不选择汉字,直接点击提交

    2021-01-26 17:49

狗尾草joss

狗尾草joss (作者)

<template>  
    <view class="content">  
        <view class="form">  
            <view><text>姓名</text><input v-model="form.name" /></view>  
            <view><text>性别</text><input v-model="form.sex" /></view>  
            <button @click="submit">提交</button>  
        </view>  
    </view>  
</template>  
<script>  
    export default {  
        data() {  
            return {  
                form: {  
                    name: '',  
                    sex: ''  
                },  
                list: {}  
            }  
        },  
        onLoad() {  
        },  
        methods: {  
            submit() {  
                console.log(JSON.stringify(this.form))  
                uni.showModal({  
                    title: '提示',  
                    content: JSON.stringify(this.form),  
                    success: function (res) {  
                    }  
                });  
            }  
        }  
    }  
</script>
狗尾草joss

狗尾草joss (作者)

又这么不了了之了吗

DCloud_UNI_GSQ

DCloud_UNI_GSQ

HBuilderX 3.1.0 alpha 已修复

该问题目前已经被锁定, 无法添加新回复