當我提交表單我希望得到的輸入值:提交表單數據?
<input type="text" id="name">
我知道我可以使用表單輸入綁定更新值給一個變量,但我如何才能做到這一點上提交。我目前有:
<form v-on:submit.prevent="getFormValues">
但我怎麼能得到getFormValues方法內的值?
另外,側面的問題,當用戶通過綁定輸入數據時,提交而不是更新變量是否有任何好處?
當我提交表單我希望得到的輸入值:提交表單數據?
<input type="text" id="name">
我知道我可以使用表單輸入綁定更新值給一個變量,但我如何才能做到這一點上提交。我目前有:
<form v-on:submit.prevent="getFormValues">
但我怎麼能得到getFormValues方法內的值?
另外,側面的問題,當用戶通過綁定輸入數據時,提交而不是更新變量是否有任何好處?
您應該使用由Schlangguru在他的迴應中提到的模型結合,特別是在這裏。
但是,還有其他技術可以使用,如普通的Javascript或引用。但我真的不明白你爲什麼會想這樣做,而不是模型結合,這是沒有意義對我說:
<div id="app">
<form>
<input type="text" ref="my_input">
<button @click.prevent="getFormValues()">Get values</button>
</form>
Output: {{ output }}
</div>
正如你看到的,我把ref="my_input"
獲得輸入DOM元素:
new Vue({
el: '#app',
data: {
output: ''
},
methods: {
getFormValues() {
this.output = this.$refs.my_input.value
}
}
})
我做了一個小的jsfiddle如果你想嘗試一下:https://jsfiddle.net/sh70oe4n/
但再次,我的反應是遠離的東西,你可以稱之爲「好習慣」
你必須爲你的輸入定義一個模型。
<input type="text" id="name" v-model="name">
然後你就可以訪問你的getFormValues
方法內部與 this.name
值。
這至少是他們是如何做到這一點在官方TodoMVC例如:https://vuejs.org/v2/examples/todomvc.html(見HTML v-model="newTodo"
和addTodo()
在JS)
表格submit
動作發出一個submit
event,它爲您提供事件目標等。
提交事件的目標是一個HTMLFormElement,它具有一個elements屬性。有關如何遍歷或按名稱或索引訪問特定元素的信息,請參見this MDN link。
如果一個name
屬性添加到您的輸入,您可以訪問現場像這樣在您的表單提交處理程序:
<form v-on: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
}
}
}
至於爲什麼你要做到這一點:HTML表單已經提供了有益的邏輯如在表單無效時禁用submit
動作,我不喜歡用Javascript重新實現。因此,如果我發現自己在執行動作之前生成了需要少量輸入的項目列表(例如選擇要添加到購物車的項目數量),我可以在每個項目中放置一個表單,使用本機表單驗證,然後從提交操作中獲取目標表單的值。
感謝您提供有關良好實踐的建議,看起來我應該遵循模型綁定技術。 – panthro