Vue获取表单数据的方法

 更新时间:2021年12月17日 16:20:11   作者:laufing  
这篇文章主要为大家介绍了Vue获取表单数据的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

需求

使用Vue收集如下用户数据:

在这里插入图片描述

获取数据并提交

代码实现:

将value的值与变量属性进行绑定

v-model.trim = ‘username' ; 去除两端空格

v-model.number = ‘age';将字符串转为数值

v-model.lazy = ‘age' ; 不是立即收集,而是切换焦点后收集

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>获取表单数据</title>
    <script src="/static/js/vue.js"></script>
</head>
<body>
    <div id="container">
        <form action="" @submit.prevent="submit">
            <label for="username">用户名:</label><br>
            <input type="text" class="username" name="username" placeholder="输入用户名" v-model.lazy="user.username"><br>
            <label for="password">密码:</label><br>
            <input type="password" class='password' name="password" placeholder="输入密码" v-model="user.password"><br>
            <label for="age">年龄:</label><br>
            <!-- type is number,只允许输入数字;input中也是字符串 -->
            <!-- v-model.number,将input的字符串转为数值 -->
            <input type="number" name="age" v-model.number="user.age"><br>
            <label for="">性别:</label>
            <!-- 非正常的input -->
            <input type="radio" name="sex" v-model="user.sex" value="female">女
            <input type="radio" name="sex" v-model="user.sex" value="male">男
            <br>
            <!-- 多选 -->
            <label for="">爱好:</label>
            <input type="checkbox" v-model="user.hobby" value="pingpong">乒乓球
            <input type="checkbox" v-model="user.hobby" value="basketball">篮球
            <input type="checkbox" v-model="user.hobby" value="football">足球
            <br>
            <!-- 下拉选框 -->
            <span>选择城市:</span><br>
            <select name="city" v-model="user.city" id="">
                <option value="">选择城市</option>
                <option value="zz">郑州</option>
                <option value="wh">武汉</option>
                <option value="bj">北京</option>
            </select>
            <br>
            <!-- 文本框 -->
            <label for="">描述:</label><br>
            <textarea name="desc" v-model="user.desc"></textarea>
            <br>
            <!-- 协议 -->
            <input type="checkbox" name="agree" v-model="user.agree">阅读并接受<a href="http://www.baidu.com">《用户协议》</a>
            <!-- 点击按钮 提交 -->
            <button :style="{display:'block',backgroundColor:'lightblue',}">提交</button>
            <!-- submit 提交 -->
            <!-- <input type="submit" value="提交"> -->
        </form>
    </div>

    <script>
        Vue.config.productionTip = false
        new Vue({
            el: "#container",
            data: {
                user: {
                    username: "",
                    password: "",
                    age: "",
                    sex: "",
                    hobby: [],
                    city: "",
                    desc: "",
                    agree: "",
                }
            },
            methods: {
                submit(event){
                    console.log("提交表单")
                    // 在form内,参数自动提交
                    console.log(JSON.stringify(this.user))
                },
            },
        })
    </script>
</body>
</html>

模板过滤器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>模板过滤器</title>
    <script src="/static/js/vue.js"></script>
    <script src="/static/js/dayjs.min.js"></script>
</head>
<body>
    <div id="container">
        <!-- 过滤器 -->
        <span>{{ time | timeFormatter}}</span><br>
        <!-- 传参数的过滤器 第一个参数永远是管道数据-->
        <span>{{ time | timeFormatter("YY-MM-DD hh:mm:ss")}}	</span>
        <!--也可以多个过滤器串联-->
    </div>
    <script>
        Vue.config.productionTip = false
        //全局过滤器,所有组件中都可以使用
        Vue.filter("myFilter", function(value){
        	return '全局过滤'
        })
        new Vue({
            el: "#container",
            data: {
                time: 1639579694662, //时间戳,不是字符串
            },
			//局部过滤器,组件内部使用
            filters: {
                timeFormatter(time, format){
                    // 第一个参数
                    if(format){
                        return dayjs(time).format(format)
                    }else{
                        return dayjs(time).format("YYYY-MM-DD HH:mm:ss")
                    }
                },
            },
        })
    </script>
</body>
</html>

过滤器的使用场景

1.插值语法中使用

2.v-bind:属性 =‘ xx| xx '

处理一些简单的操作,产生了新数据

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • vue 动态添加的路由页面刷新时失效的原因及解决方案

    vue 动态添加的路由页面刷新时失效的原因及解决方案

    这篇文章主要介绍了vue动态添加的路由页面刷新时失效的原因及解决方案,帮助大家更好的理解和学习使用vue,感兴趣的朋友可以了解下
    2021-02-02
  • element上传组件循环引用及简单时间倒计时的实现

    element上传组件循环引用及简单时间倒计时的实现

    这篇文章主要介绍了element上传组件循环引用及简单时间倒计时的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • vue Tooltip提示动态换行问题

    vue Tooltip提示动态换行问题

    这篇文章主要介绍了vue Tooltip提示动态换行问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • vue axios 简单封装以及思考

    vue axios 简单封装以及思考

    axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端。这篇文章主要介绍了vue axios 简单封装以及思考 ,需要的朋友可以参考下
    2018-10-10
  • vue3.2自定义弹窗组件结合函数式调用示例详解

    vue3.2自定义弹窗组件结合函数式调用示例详解

    这篇文章主要为大家介绍了vue3.2自定义弹窗组件结合函数式调用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 在vue.config.js中优化webpack配置的方法

    在vue.config.js中优化webpack配置的方法

    在日常开发中我们离不开打包工具webpack,但是不同的配置会影响我们项目的运行构建时间,也会影响打包之后项目包的大小,这篇文章记录一下我使用过的可以优化webpack的配置,需要的朋友可以参考下
    2024-05-05
  • 如何用vue实现网页截图你知道吗

    如何用vue实现网页截图你知道吗

    这篇文章主要为大家介绍了vue如何实现网页截图,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • Axios在vue项目中的封装步骤

    Axios在vue项目中的封装步骤

    Axios 是一个基于 promise 的网络请求库,可以用于浏览器和 node.js,是一个第三方插件,第三方异步请求工具库,这篇文章主要介绍了Axios在vue项目中的封装方法,需要的朋友可以参考下
    2022-10-10
  • Vue.js 前端项目在常见 Web 服务器上的部署配置过程

    Vue.js 前端项目在常见 Web 服务器上的部署配置过程

    Web服务器支持多种编程语言,如 PHP,JavaScript,Ruby,Python 等,并且支持动态生成 Web 页面,这篇文章主要介绍了Vue.js 前端项目在常见 Web 服务器上的部署配置,需要的朋友可以参考下
    2023-02-02
  • vue3学习笔记简单封装axios示例实现

    vue3学习笔记简单封装axios示例实现

    这篇文章主要为大家介绍了vue3学习笔记简单封装axios示例实现,
    2022-06-06

最新评论