テキストボックス(input、textarea)を操作する [Vue.js]

Vue.js The Progressive JavaScript Framework

Vue.jsではv-modelディレクティブを使用することで、HTMLのフォーム(form要素)のテキストボックス(input要素やtextarea要素)に双方向(two-way)データバインディングを簡単に実装することができます。

今回は双方向バインディングを作成して、テキストボックスを操作する方法を紹介します。

双方向バインディングを行うv-modelディレクティブ

v-modelディレクティブは、フォームのテキストボックスにプログラム(JavaScript)で定義したデータを双方向にバインドしてくれます。

v-modelディレクティブは、HTMLの要素が持つvalueプロパティとinputイベントにバインドされます。
v-modelは糖衣構文(syntax sugar)で、v-bindディレクティブでvalueプロパティにバインドし、v-onディレクティブでinputイベントにバインドした場合と同様の動作になります。

v-modelディレクティブを使用してデータをバインドすることで、アプリケーションを利用しているユーザーが<input type=”text”>要素や<textarea>要素に入力した値(データ)をリアルタイムに管理できます。

v-modelディレクティブについては、以下の記事にまとめていますので、参考にしてください。

v-modelディレクティブでフォームの入力要素と双方向データバインディング [Vue.js]
本記事では、Vue.jsのv-modelディレクティブについて紹介します。 v-modelディレクティブ ユーザーからの入力...

v-bindディレクティブ、v-onディレクティブについても、以下の記事にまとめていますので、参考にしてください。

v-bindディレクティブでHTML要素の属性にバインドする [Vue.js]
本記事では、Vue.jsのv-bindディレクティブについて紹介します。 v-bindディレクティブ HTMLの要素はcla...
v-onディレクティブでイベントの処理(メソッドや式)をバインドする [Vue.js]
本記事では、Vue.jsのv-onディレクティブについて紹介します。 v-onディレクティブ ユーザーからの操作を受け付ける...

テキストボックス(input[type=”text”])にデータバインドする

ここでは簡単な例を通して、input要素のtype属性にtextを指定したテキストボックスにデータをバインドします。

input要素を配置する

まず、HTMLテンプレートにinput要素を配置します。

次に、JavaScriptにVueのインスタンスを作成して、dataオプションにmessageというプロパティを定義します。

ここまで準備ができたら、HTMLテンプレートに定義したinput要素にv-modelディレクティブを使用してデータをバインドします。

Vueインスタンスに定義したデータのmessageをv-modelディレクティブでバインドし、バインドしたデータを可視化するためにマスタッシュ記法({{}})で表示します。

上記のコードを実行すると、以下のような画面が表示されます。

Vue.js テキストボックス(input type="text")にデータをバインドしたサンプルの実行結果

テキストボックスの値を変更すると、それに伴ってテキストボックスの値が変更され、双方向データバインディングができていることが確認できます。

Vue.js テキストボックス(input type="text")にデータをバインドしたサンプルの実行結果

複数行テキストボックス(textarea)にデータバインドする

ここでは複数行テキストボックスのtextarea要素にデータをバインドします。
複数行テキストボックスのtextarea要素の場合も、v-modelディレクティブを使用したデータバインドは、input[type=”text”]要素の場合と同様です。
HTML

JavaScript

数値テキストボックス(input[type=”number”])にデータバインドする

ここまでの例では、データが文字列の場合のバインドを紹介しましたが、バインドする要素が数値を入力するテキストボックス(input[type=”number”])の場合は以下のようになります。
HTML

JavaScript

数値データをバインドするテキストボックスの場合は、v-modelディレクティブの.number修飾子を使用します。

Vue.js 入門 Tips 一覧