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

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

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

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

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

解決済

1回答

2360閲覧

laravelのformの中に複数のボタンが存在し、別々の処理をしたい

ORyohei

総合スコア18

Vue.js

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

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2020/07/21 07:01

編集2020/07/21 07:04

laravelにvueのコンポーネントを入れています。vueのコンポーネントでは画像プレビューの処理をしていて、画像が選択された後、画像をリセットするためのボタンを用意しています。しかし、laravelのformの中にvueのコンポーネントが存在するため、画像リセットボタンを押すとlaravel側のrequestが送られてしまいます。画像リセットボタン,laravelのformリクエスト、それぞれ別々に処理をしたいのですが何かいい方法はありますでしょうか。

profile.blade.php

<form method="POST" action="{{route('buyers.update', ['id' =>Auth::guard('buyers')->user()]) }}"enctype="multipart/form-data" > @csrf <ul class=""> @error('buyer_name') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror <li class="p-form--item"> <input id="buyer_name" type="buyer_name" class="c-text @error('buyer_name') is-invalid @enderror" name="buyer_name" value="{{ $buyer_info->buyer_name?? old('buyer_name') }}" required autocomplete="buyer_name" placeholder="ユーザー名" > </li> @error('img') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror ++++<Img-Item></Img-Item>++++++ </ul> <div class="submit-btn"> <input name="submit" type="submit" value="変更する" class="p-btn--submit c-btn"> </div> </form>

ImgItem.vue

<template> <div> <li class="p-form--item__file"> <span>画像{{ userId }}</span> <input type="file" placeholder="画像" class="c-file" name="img" value="" ref="file" @change="onFileChange($event)"> <img :src="imageData" v-if="imageData" class="img-preview"> </li> <button @click="resetFile()" class="btn btn-close" name="img-reset" > 画像を編集する </button> </div> </template> <script> const axios = require('axios'); export default { props: { Id: { type: Number, default:0, }, }, data() { return { imageData:'', Id : this.Id, img: [] } }, methods: { //------------------------------ //画像リセット //------------------------------ getImg() { var url = 'user/ajax/img/{id}/'+ this.imgId; axios.get(url) .then(response =>{ console.log(response.data); this.img = response.data; }) .catch(error => console.log(error)) }, //------------------------------ ////画像を読み込み //------------------------------ onFileChange(e) {//引数eでイベントに結果を投げる const files = e.target.files; if(files.length > 0) {//画像が選択されたかをチェック var self = this; var file = files[0]; var reader = new FileReader();//文字ファイルを読み込む reader.onload = function(e) { self.imageData = e.target.result; }; reader.readAsDataURL(file);//画像を読み込み } } }, //------------------------------ //画像リセット //------------------------------ resetFile() { const input = this.$refs.file; input.type = 'text'; input.type = 'file'; this.imageData = ''; }, } </script>

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

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

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

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

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

guest

回答1

0

ベストアンサー

buttonタグはtypeを指定しないとsubmit扱いになります。
明確にtype="button"を指定するといいはずです。

投稿2020/07/21 13:57

posaune

総合スコア31

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

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

ORyohei

2020/07/22 01:28

type="button"を指定したらうまくいきました!ありがとうございます!
ORyohei

2020/07/22 01:40

度々申し訳ございません。vueの方では画像プレビュー用の画像リセット用の送信をしたかったのですが、type="button"を指定するとvueも効かなくなってしまいました。ロジックを書いていくしか無いでしょうか??
ORyohei

2020/07/22 02:16

v-on:clickでイベント発生されるとうまくいきました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問