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

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

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

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

Q&A

1回答

3239閲覧

vueで画面上部に配置されているエラーメッセージを見せたいため上まで戻したい。

tomomo

総合スコア430

Vue.js

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

0グッド

0クリップ

投稿2018/06/11 02:10

フォームに入力項目が多数あり、最後に登録ボタン(submit)がある時、
必然的に画面を下までスクロールして登録ボタンを押すことになるかと思います。
その際、整合性エラーなど発生した場合、そのエラーを見せたいため
画面上部まで戻したい(スクロール?)のですが、どのようにやればいいのかをご教授いただけないでしょうか。

よろしくお願いします。

javascript

1<template> 2 <div> 3 <div>{{ invalid }}</div> ← エラーメッセージ 4 <form @submit.prevent="save"> 5 <input v-model="form.name"> 6 : 7 : // スクロールするほどのたくさんの項目 8 : 9 <button variant="success" type="submit">登録</button> 10 </form> 11 </div> 12</template> 13 14<script> 15export default { 16 data() { 17 form: { 18 name: ... 19 : // 項目 20 }, 21 invalid: {}, 22 } 23 methods: { 24 save() { 25 if ( /* 整合性判定 */ ) { 26 this.invalid = { 27 name: '名前が未記入', 28 }; 29 // この辺にフォームのトップまでスクロールする記述が必要かと思われ。。。 30 } else { 31 // 登録処理 32 } 33 } 34 } 35} 36</script>

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

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

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

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

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

guest

回答1

0

$("コンポーネントのルートのdiv").scrollTop($("エラーメッセージ要素").scrollTop())

みたいな感じでできそうな気がします

例えば

<template> <div id="root"> <div id="errorMessage">{{ invalid }}</div> ← エラーメッセージ </div> </template>

だと、

$("#root").scrollTop($("#errorMessage").scrollTop())

みたいな感じで
間違ってたらごめんなさい

投稿2018/06/11 04:06

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

tomomo

2018/06/11 10:28

回答ありがとうございます。 残念ながら動かなかったのでもう少し考えてみようと思います。 あと書き忘れて申し訳なかったのですが、上のコンポーネントは<router-view>の中にあります。vue-routeは関係あるのでしょうかね? もし知っていましたら教えてください。
退会済みユーザー

退会済みユーザー

2018/06/12 02:57

すみません、私もやってみたのですが、うまくいかなくて... 情けない話なのですが私もたった今同じような質問をさせていただきました もし何か分かれば共有いたします(>___<)
退会済みユーザー

退会済みユーザー

2018/06/12 08:23 編集

単一ファイルコンポーネントの中で import jQuery from "jquery" global.$ = jQuery とすれば私はできました 参考↓ https://teratail.com/questions/130729
退会済みユーザー

退会済みユーザー

2018/06/13 02:34

おそらく、 global.$ = jQuery としなくても import $ from "jquery" だけでできます
tomomo

2018/06/13 02:43

ありがとうございます。 作っているものとは別に単純なのを作ってテストしてみたけど、ダメでしたね。 webpackを使っていますが、下記から察するにjQueryは読み込めてはいるようなのですが。。。 console.log($().jquery); 3.3.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector
退会済みユーザー

退会済みユーザー

2018/06/13 02:57

node_modulesにjqueryは入ってるんですよね
tomomo

2018/06/13 03:01

そうです。
退会済みユーザー

退会済みユーザー

2018/06/13 03:46

力になれなくてごめんなさい... ajaxとか出てるし、もしかしたら全く別のところに原因があるのかもしれません...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問