Vue.js コンポーネントで初期フォーカスを設定する
Vue.js
で初期フォーカスを設定する方法を紹介します。
例えばモーダル画面が表示された時、モーダルのコンポーネントの中のテキストボックスにフォーカスを当てたい場合などがあります。
以下のように、ref
属性を指定すると、JavaScript
のgetElementById
で取得したときのように、element
としてコントロールにアクセスできるようになります。
<input type="text" ref="text1">
this.$refs.コントロール名
の形式アクセスします。focus
の処理は通常のJavaScript
と同じです。
this.$refs.text1.focus();
注意点
初期フォーカスなので、コンポーネントが作成されたタイミングで処理を行うことになります。
created
のイベントだとまだ要素にアクセスできない状態なので、初期フォーカスをしたい場合はmounted
のイベントで行う必要があります。
<template>
<input type="text" ref="text1">
</template>
<script>
export default {
created () {
this.$refs.text1.focus(); // NG
},
mounted () {
this.$refs.text1.focus(); // OK
}
}
</script>