整理一下vue的表单提交方式
每次做项目都会用,也会踩一些坑,这里统一整理一下,当个模板用vue表单收集和提交<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="vie
·
每次做项目都会用,也会踩一些坑,这里统一整理一下,当个模板用
vue表单收集和提交
<!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>Document</title>
</head>
<body>
<div id="app">
<form :model="form" @submit.prevent="submit">
<div>
<label>用户名
<input v-model.trim="form.username" type="text" placeholder="请输入用户名">
</label>
</div>
<div>
<label>密码
<input v-model="form.password" type="password" placeholder="请输入密码">
</label>
</div>
<div>
<label>头像<input type="file" @change="handleChange"></label>
</div>
<div>
<label>姓名
<input v-model.trim="form.name" type="text" placeholder="请输入您的姓名">
</label>
</div>
<div>
<label>性别
<label><input v-model="form.sex" type="radio" name="sex" value="male">男</label>
<label><input v-model="form.sex" type="radio" name="sex" value="female">女</label>
</label>
</div>
<div>
<label>年龄
<input type="number" v-model.number="form.age" placeholder="请输入年龄">
</label>
</div>
<div>
<label>爱好
<label>
<input v-model="form.hobby" type="checkbox" value="study">学习
</label>
<label>
<input v-model="form.hobby" type="checkbox" value="games">打游戏
</label>
<label>
<input v-model="form.hobby" type="checkbox" value="eat">吃饭
</label>
</label>
</div>
<div>
<label>所属校区
<select v-model="form.campus">
<option value="beijing">北京</option>
<option value="shanghai">上海</option>
<option value="shenzhen">深圳</option>
<option value="wuhan">武汉</option>
</select>
</label>
</div>
<div>
<label>其他信息
<textarea v-model.lazy="form.other" style="vertical-align: middle;" cols="30" rows="10"></textarea>
</label>
</div>
<div>
<label>
<input v-model="form.accept" type="checkbox">
阅读并接受<a href="http://www.baidu.com">《用户协议》</a>
</label>
</div>
<div>
<button>提交</button>
</div>
</form>
</div>
<script src="lib/vue.js"></script>
<script>
Vue.config.productionTip = false
const vm = new Vue({
el: '#app',
data() {
return {
form: {
hobby: []
},
image: {}
}
},
methods: {
submit() {
console.log(this.form);
//在这里进行上传(axios、ajax)
},
handleChange(event) {
let file = event.target.files[0]
this.form.image = file
}
},
})
</script>
</body>
</html>
上述代码有三点需要说明
- 在<form>标签中出现了
:model="form"
,这是为了将form中的各项数据动态收集到vue的data中的form对象中,方便统一管理 - form标签上的
@submit.prevent
为提交时阻止表单的默认行为(跳转) v-model.trim
是将输入的数据去除前后的空格;v-model.number
是转换为Number类型;v-model.lazy
是失去焦点后再把数据渲染到页面上
更多推荐
已为社区贡献2条内容
所有评论(0)