提交表单后,我希望得到一个输入值:
<input type="text" id="name">
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用表单输入绑定来将值更新为变量,但我怎样才能在提交时执行此操作.我目前有:
<form v-on:submit.prevent="getFormValues">
Run Code Online (Sandbox Code Playgroud)
但是如何在getFormValues方法中获取值?
另外,附带问题,当用户通过绑定输入数据时,在提交时执行此操作是否有任何好处而不是更新变量?
Sea*_*Ray 22
表单submit操作会发出一个submit事件,为您提供事件目标等.
submit事件的目标是HTMLFormElement,它具有elements属性.请参阅此MDN链接,了解如何通过名称或索引进行迭代或访问特定元素.
如果name在输入中添加属性,则可以在表单提交处理程序中访问如下字段:
<form @submit.prevent="getFormValues">
<input type="text" name="name">
</form>
new Vue({
el: '#app',
data: {
name: ''
},
methods: {
getFormValues (submitEvent) {
this.name = submitEvent.target.elements.name.value
}
}
}
Run Code Online (Sandbox Code Playgroud)
至于你为什么要这样做:HTML表单已经提供了有用的逻辑,比如submit在表单无效时禁用操作,我不想在Javascript中重新实现.所以,如果我发现自己在执行操作之前生成了需要少量输入的项目列表(比如选择要添加到购物车中的项目数量),我可以在每个项目中放置一个表单,使用本机表单验证,然后从提交操作中获取目标表单的值.
Ham*_*bot 18
您应该使用模型绑定,特别是Schlangguru在他的回复中提到的.
但是,您可以使用其他技术,例如普通的Javascript或引用.但我真的不明白你为什么要这样做而不是模型绑定,这对我来说没有意义:
<div id="app">
<form>
<input type="text" ref="my_input">
<button @click.prevent="getFormValues()">Get values</button>
</form>
Output: {{ output }}
</div>
Run Code Online (Sandbox Code Playgroud)
如您所见,我将ref="my_input"获取输入DOM元素:
new Vue({
el: '#app',
data: {
output: ''
},
methods: {
getFormValues () {
this.output = this.$refs.my_input.value
}
}
})
Run Code Online (Sandbox Code Playgroud)
如果你想尝试一下,我做了一个小jsFiddle:https://jsfiddle.net/sh70oe4n/
但是再一次,我的回答远远不是你称之为"良好做法"的东西.
| 归档时间: |
|
| 查看次数: |
54382 次 |
| 最近记录: |