【前端】WebStorm中使用 Vue.js 构建用户信息提交表单
文章目录
- 前言
- 一、引入 Vue.js
- 二、创建表单结构
- 1. 数据绑定
- 2. 事件处理
- 三、创建 Vue 实例
- 1. 数据初始化
- 2. 提交方法
- 四、外部访问 Vue 实例数据
- 五、完整代码
- html
- css
- javascript
- 浏览器运行结果
- 总结
标题 | 详情 |
---|---|
作者 | JosieBook |
头衔 | CSDN博客专家资格、阿里云社区专家博主、软件设计工程师 |
博客内容 | 开源、框架、软件工程、全栈(,NET/Java/Python/C++)、数据库、操作系统、大数据、人工智能、工控、网络、程序人生 |
欢迎感谢 | 👍点赞、✍评论、⭐收藏 |
前言
在现代前端开发中,Vue.js 是一个非常流行的 JavaScript 框架,它使得构建用户界面变得更加简单和高效。本文将通过一个简单的表单示例,介绍如何使用 Vue.js 进行数据绑定和事件处理。
一、引入 Vue.js
首先,我们需要在 HTML 文件中引入 Vue.js。可以通过 CDN 直接引入:
<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
二、创建表单结构
接下来,我们创建一个简单的表单,包含昵称、年龄、单身状态和喜欢的选项。以下是表单的基本结构:
<div id="form">
<label for="username">昵称:</label>
<input type="text" id="username" v-model.trim="username">
<br>
<label for="age">年龄:</label>
<input type="number" id="age" v-model.number="age">
<br>
<label for="checkbox">单身:</label>
<input type="checkbox" id="checkbox" v-model="checked">
<label for="checkbox">{{ checked }}</label>
<br>
<label>喜欢:</label>
<input type="checkbox" id="runoob" value="Runoob" v-model="checkedNames">
<label for="runoob">码代码</label>
<input type="checkbox" id="google" value="Google" v-model="checkedNames">
<label for="google">码文字</label>
<input type="checkbox" id="taobao" value="Taobao" v-model="checkedNames">
<label for="taobao">买买买</label>
<br>
<br>
<input type="submit" v-on:click="submit"/>
<br/>
</div>
1. 数据绑定
在这个表单中,我们使用了 v-model
指令来实现数据双向绑定。这样,当用户在输入框中输入内容时,Vue.js 会自动更新对应的数据属性。
v-model.trim
:用于过滤用户输入的首尾空格。v-model.number
:将输入值自动转换为数字类型。
2. 事件处理
我们在提交按钮上使用 v-on:click
指令来绑定一个提交事件。当用户点击提交按钮时,会调用 submit
方法。
三、创建 Vue 实例
接下来,我们需要创建一个 Vue 实例,并定义数据和方法:
var vm = new Vue({
el: '#form',
data: {
// 初始值
username: 'username ',
age: 18,
checked: false,
checkedNames: ['Runoob']
},
methods: {
// 提交表单
submit: function() {
var params = new Object();
params.username = this.username;
params.age = this.age;
params.checked = this.checked;
params.checkedNames = this.checkedNames;
alert("formdata:" + JSON.stringify(params));
}
}
});
1. 数据初始化
在 data
属性中,我们定义了一些初始值,包括 username
、age
、checked
和 checkedNames
。这些值会与表单中的输入控件进行绑定。
2. 提交方法
在 methods
属性中,我们定义了一个 submit
方法,用于处理表单提交。在这个方法中,我们将表单数据打包成一个对象,并通过 alert
显示出来。
四、外部访问 Vue 实例数据
我们还可以在 Vue 实例外部访问这些数据:
console.log(vm.username);
console.log(vm.age);
console.log(vm.checked);
console.log(vm.checkedNames);
五、完整代码
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>联系我们 - 企业名称</title>
<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
<link rel="stylesheet" href="myCss.css">
</head>
<body>
<div id="form">
<label for="username">昵称:</label>
<input type="text" id="username" v-model.trim="username">
<br>
<label for="age">年龄:</label>
<input type="number" id="age" v-model.number="age">
<br>
<label for="checkbox">单身:</label>
<input type="checkbox" id="checkbox" v-model="checked">
<label for="checkbox">{{ checked }}</label>
<br>
<label>喜欢:</label>
<input type="checkbox" id="runoob" value="Runoob" v-model="checkedNames">
<label for="runoob">码代码</label>
<input type="checkbox" id="google" value="Google" v-model="checkedNames">
<label for="google">码文字</label>
<input type="checkbox" id="taobao" value="Taobao" v-model="checkedNames">
<label for="taobao">买买买</label>
<br>
<br>
<input type="submit" v-on:click="submit"/>
<br/>
</div>
<!-- Font Awesome -->
<script src="myJsp.js" defer></script>
</body>
</html>
css
/* 基础重置 */
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;
background-color: #f0f2f5;
line-height: 1.6;
padding: 2rem;
}
/* 表单容器 */
#form {
max-width: 600px;
margin: 0 auto;
background: white;
padding: 2rem;
border-radius: 12px;
box-shadow: 0 8px 30px rgba(0,0,0,0.12);
}
/* 表单元素通用样式 */
label {
display: block;
color: #2d3748;
font-weight: 500;
margin-bottom: 0.5rem;
font-size: 0.9rem;
}
input:not([type="checkbox"]) {
width: 100%;
padding: 0.8rem;
border: 2px solid #e2e8f0;
border-radius: 8px;
font-size: 1rem;
transition: all 0.3s ease;
}
input:focus:not([type="checkbox"]) {
outline: none;
border-color: #4F46E5;
box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1);
}
/* 复选框样式 */
input[type="checkbox"] {
position: relative;
width: 18px;
height: 18px;
margin-right: 0.5rem;
cursor: pointer;
}
input[type="checkbox"]::before {
content: "";
display: block;
width: 18px;
height: 18px;
border: 2px solid #cbd5e0;
border-radius: 4px;
background: white;
transition: all 0.2s ease;
}
input[type="checkbox"]:checked::before {
background: #4F46E5;
border-color: #4F46E5;
}
input[type="checkbox"]:checked::after {
content: "✓";
position: absolute;
left: 4px;
top: 1px;
color: white;
font-size: 12px;
}
/* 提交按钮 */
input[type="submit"] {
background: linear-gradient(135deg, #4F46E5, #7C3AED);
color: white;
font-weight: 600;
padding: 1rem 2rem;
border: none;
border-radius: 8px;
cursor: pointer;
transition: transform 0.2s, box-shadow 0.2s;
}
input[type="submit"]:hover {
transform: translateY(-1px);
box-shadow: 0 4px 12px rgba(79, 70, 229, 0.3);
}
input[type="submit"]:active {
transform: translateY(0);
}
/* 显示区域样式 */
span {
display: block;
margin: 1rem 0;
padding: 1rem;
background: #f8fafc;
border-radius: 8px;
color: #475569;
}
/* 响应式设计 */
@media (max-width: 480px) {
body {
padding: 1rem;
}
#form {
padding: 1.5rem;
}
input:not([type="checkbox"]) {
padding: 0.7rem;
}
}
/* 自定义复选框布局 */
.checkbox-group {
display: flex;
gap: 1rem;
margin: 1rem 0;
}
.checkbox-item {
display: flex;
align-items: center;
}
javascript
//.number 如果想自动将用户的输入值转为 Number 类型(如果原值的转换结果为 NaN 则返回原值),可以添加一个修饰符 number 给 v-model 来处理输入值
//<input v-model.number="age" type="number">
//.trim 如果要自动过滤用户输入的首尾空格,可以添加 trim 修饰符到 v-model 上过滤输入
//<input v-model.trim="msg">
var vm=new Vue({
el: '#form',
data: {
//初始值
username:'username ',
age:18,
checked : false,
checkedNames: ['Runoob']
},
methods:{
//提交表单
submit:function(){
var params=new Object();
params.username=this.username;
params.age=this.age;
params.checked=this.checked;
params.checkedNames=this.checkedNames;
alert("formdata:"+JSON.stringify(params));
}
}
});
//vue外部获取vue内部值
console.log(vm.username);
console.log(vm.age);
console.log(vm.checked);
console.log(vm.checkedNames);
浏览器运行结果
点击提交按钮后:
总结
通过这个简单的表单示例,我们学习了如何使用 Vue.js 进行数据绑定、事件处理以及如何访问 Vue 实例中的数据。Vue.js 的双向数据绑定特性使得表单处理变得更加直观和简便,极大地提高了开发效率。
希望本文能够帮助你更好地理解 Vue.js 的基本用法,并在实际项目中灵活运用。
Hello,我是 JosieBook 。如果你喜欢我的文章,欢迎三连给我鼓励和支持:👍点赞 📁 关注 💬评论,我会给大家带来更多有用有趣的文章。
原文链接 👉 ,⚡️更新更及时。