uniapp使用from表单提交后清空input输入内容的正确方法

666次阅读

使用uni-app做小程序开发的时候,使用到from表单提交,但是提交后input输入的内容却没有办法清空。

    <form @submit="FormSubmit">
        <input confirm-type="go"></input>
        <button form-type="submit" class="">添加</button>
    </form>

搜索了一下后发现大家在微信小程序原生开发的方案都是给input的value设置一个默认值inputName,然后在提交成功后,把inputName通过this.setData 设置为空

     //直接将input值设置空
     this.setData({
        inputName: ''
     })

但是在uniapp上这样做,并不会改变input输入的内容,尝试改用了以下方法

    <template>
        <view>
            <form @submit="FormSubmit">
                <input :value="inputName" confirm-type="go"></input>
                <button form-type="submit" class="">添加</button>
            </form>
        <view>
    <template>
    <script>
        data() {
            return {
                inputName:''
            }
        },
        methods: {
            FormSubmit:(){
                this.inputName = ''
            }
        }
    </script>

可这样的方法也不会清空input输入内容。网上也有说通过设置延迟的方法能清空input输入的内容,但是测试后,发现依然不能清空。

    setTimeout(() => { 
        this.inputName = ''
    }, 10)

后来把inputName设置成null就可以做到在from提交成功后,清空input输入的内容

this.inputName = null

但是又发现这样的做法,仅仅在第一次提交时会清空input输入的内容而已,再次提交操作并不会清空input输入的内容了。

最后想到一个方法,把value属性换成了v-model双向绑定就成功了

    <template>
        <view>
            <form @submit="FormSubmit">
                <input v-model="inputName" confirm-type="go"></input>
                <button form-type="submit" class="">添加</button>
            </form>
        <view>
    <template>
    <script>
        data() {
            return {
                inputName:''
            }
        },
        methods: {
            FormSubmit:(){
                this.inputName = ''
            }
        }
    </script>

所以这个应该是在uni-app上开发微信小程序,使用from表单提交后清空input输入内容的正确方法了吧