質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

解決済

1回答

2066閲覧

Contact Form 7 + Nuxt.js お問合せフォームにselectの項目を追加したい

YuriY

総合スコア33

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

0クリップ

投稿2020/04/13 06:50

編集2020/04/13 06:54

https://qiita.com/hiropy0123/items/33f3c3ffbb5879e8fe0a

上記のサイトを参考にお問合せフォームを作成しています。

全く同じ挙動でメール送信は成功しました。

このフォームにselectで選択する項目を増やしたいですが
v-modelの扱いがよく分かりません。

また、メール送信成功後に初期ページに戻ると2回目以降メール送信ができなくなるのですが何故でしょうか?
closeを押下したタイミングでFormの中身をresetFormしています。

ContactForm.vue

1 .form-content 2 label.required お問合せカテゴリ 3 input( 4 v-model="formData.category" 5 type="select" 6 class="form-control" 7 name="category" 8 required 9 autocomplete="name" 10 ) 11 .input-hint 12 span.error-info(v-show="touched.category && !formData.category") 必須項目です

formModal.vue

1 .modal 2 div.infomation.info_confirm(:class="myStatus") {{ dataResponse ? dataResponse.message : 'ご入力内容にお間違いがないかご確認の上、「送信」ボタンを押してください。入力内容を編集する場合は「戻る」を押してください。' }} 3 .confirm(v-if="!dataResponse") 4 dl 5 dt お問合せカテゴリ 6 dd {{ getFormData.category }} 7 dl 8 dt 名前 9 dd {{ getFormData.yourName }} 10 dl 11 dt 会社名 12 dd {{ getFormData.campany }} 13 dl 14 dt メールアドレス 15 dd {{ getFormData.yourEmail }} 16 dl 17 dt お問い合わせ内容 18 dd(v-html="getFormData.message") 19

index.js

1// # Modules Mode Vuex Store 2export default { 3 state: () => ({ 4 formData: { 5 category: null, 6 yourName: null, 7 campany: null, 8 yourEmail: null, 9 message: null 10 } 11 }), 12 getters: { 13 getFormData: state => state.formData 14 }, 15 mutations: { 16 setFormData(state, payload) { 17 state.formData = payload 18 } 19 }, 20 actions: { 21 resetForm(context) { 22 const emptyForm = { 23 category: null, 24 yourName: null, 25 campany: null, 26 yourEmail: null, 27 message: null 28 } 29 context.commit('setFormData', emptyForm) 30 } 31 } 32} 33

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

以下の書き方をしたら成功しました。

select( v-model="formData.category" type="select" class="form-control" name="category" required autocomplete="name" @blur="touched.category = true" ) option(v-for="option in category.options" v-bind:value="option.value") {{option.text}} span selected: {{ formData.category }}
category: { selected: '質問', options: [ { text: '質問', value: '質問' }, { text: '相談', value: '相談' }, { text: '感想', value: '感想' }, { text: '依頼', value: '依頼' }, { text: 'その他', value: 'その他' } ] },

投稿2020/04/14 02:55

YuriY

総合スコア33

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問