Vue.js从入门到跑路-表单输入数据处理

我们在Vue中绑定表单输入数据主要有两种方法:事件监听和v-model

事件监听

1
2
<h1>{{ msg }}</h1>
<input type="text" @input="handleInput" id="msg" />
1
2
3
4
5
6
7
8
9
10
11
12
13
const app = Vue.createApp({
data() {
return {
msg: "",
};
},
methods: {
handleInput(event) {
this.msg = event.target.value;
},
},
});
app.mount("#app");

在这个示例中,我们定义了一个handleInput方法,@input即监听输入事件,vue能访问JS原生的事件对象指向值即用event.target.value,要想在页面中使用需要保存到data中。

v-model

改写上面的示例代码

1
2
3
<h1>{{ msg }}</h1>
<input type="text" v-model="msg" id="msg" />
<button @click="reset">重置</button>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
const app = Vue.createApp({
data() {
return {
msg: "",
};
},
methods: {
reset(){
this.msg = "";
}
},
});
app.mount("#app");

我们添加一个重置方法,当我们点击按钮的时候,我们会发现div和输入框里的值都被清空了,实现了数据的双向绑定(即输入框的数据和data中的msg绑定,两者只要有一个更新,另一个也会更新)

绑定单选框

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<div id="app">
<input type="radio" v-model="picked" value="html">
<label>html</label>
<input type="radio" v-model="picked" value="css">
<label>css</label>
<input type="radio" v-model="picked" value="javascript">
<label>javascript</label>
<p>你选择的是:{{picked}}</p>
</div>
<script>
//创建vue示例
const app = Vue.createApp({
data() {
return {
picked: ''
}
}
}).mount('#app')
</script>

要注意的是v-model 绑定的是value的值

绑定多选框

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<div id="app">
<input type="checkbox" v-model="picked" value="html">
<label>html</label>
<input type="checkbox" v-model="picked" value="css">
<label>css</label>
<input type="checkbox" v-model="picked" value="javascript">
<label>javascript</label>
<p>你选择的是:{{picked}}</p>
</div>
<script>
const app = Vue.createApp({
data() {
return {
picked: []
}
}
}).mount('#app')
</script>

未配置value v-model绑定的是checked
配置value v-model初始值为非数组 v-model绑定的是checked
配置value v-model初始值为数组 v-model绑定的是value

在vue中还有一种方法,设置元素的true-valuefalse-value 属性,在选中时v-model绑定的数据会被设为true-value的值,取消选择则为false-value

1
2
3
4
5
<input
type="checkbox"
v-model="toggle"
true-value="yes"
false-value="no" />

绑定下拉列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<div id="app">
<select v-model="selected">
<option v-for="item in option" :value="item.value">{{item.text}}</option>
</select>
<p>你选择的是:{{selected}}</p>
</div>
<script>
const app = Vue.createApp({
data() {
return {
selected: '',
option: [
{ value: 'html', text: 'html' },
{ value: 'css', text: 'css' },
{ value: 'javascript', text: 'javascript' }
]
}

}
}).mount('#app')
</script>

这里选项用了v-for进行动态渲染,如果选项可多选,selected需为一个数组

v-model的修饰符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<div id="app">
<!-- v-model.lazy 失去焦点时才更新数据 -->
<input type="text" v-model.lazy="text1">
<!-- v-model .number 转换为数字类型 -->
<input type="text" v-model.number="text2">
<!-- v-model .trim 去除首尾空格 -->
<input type="text" v-model.trim="text3">
<p>你输入的是:{{text1}}</p>
<p>你输入的是:{{text2}}</p>
<p>你输入的是:{{text3}}</p>
</div>
<script>
const app = Vue.createApp({
data() {
return {
text1: '',
text2: '',
text3: ''
}
}
}).mount('#app')
</script>

Vue.js从入门到跑路-表单输入数据处理

http://wxory.com/archives/49950.html

作者

Wxory

发布于

2024-04-23

更新于

2024-04-23

许可协议

CC BY 4.0

评论