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

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

新規登録して質問してみよう
ただいま回答率
85.46%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

654閲覧

Javascript 「記事削除」を押すとログアウトされてしまう

Y0shito

総合スコア3

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2021/10/04 05:39

編集2021/10/04 08:46

Laravelで掲示板を作成しており、「記事削除」ボタンにonclickでconfirmを実装し、キャンセル時は問題ないのですが、OK時に以下のような挙動をしてしまい困っています。

  • 記事が1件のみで削除するとログアウトされ、記事は削除されない
  • 複数記事があるときは削除されるが、エラーが出る

以下該当コード。

Javascript

1const articleDelete = () => { 2 if (window.confirm('本当に削除しますか?')) { 3 document.articleOptions.submit(); 4 } else { 5 return false; 6 } 7}

HTML

1// ログアウトのコード 2<form name="logout" action="mypage" method="POST"> 3 @csrf 4 <button class="btn btn-outline-danger btn-sm">ログアウト</button> 5</form> 6 7 8<form name="articleOptions" method="POST"> 9 @csrf 10 ... 11 // 記事削除のコード 12 <button class="btn btn-danger btn-sm" 13 onclick="articleDelete(); return false;" formaction="delete" name="id" 14 value="{{$item->id}}">削除</button> 15</form>

エラー内容の確認とformのname周りやタイポなど見ていますが、原因がつかめません。
解決するにはどうすればいいでしょうか?

追記:記事の表示部分を掲載し直しました。
また掲載して気づいたのですが、@foreach内にformを入れているため、form name="articleOptions"が繰り返し生成されていました。これが悪さをしているのでしょうか?

HTML

1@foreach ($items as $item) 2 <div class="card my-3"> 3 <div class="card-header d-inline-flex pb-0"> 4 <h3><a href="article/id/{{ $item->id }}">{{ $item->title }}</a></h3> 5 <div class="ml-auto d-inline-flex"> 6 <form name="articleOptions" method="POST"> 7 @csrf 8 9 @if ($item->open == \App\Enums\PublicStatus::OPEN) //記事が公開されていれば非公開ボタン 10 <button class="btn btn-secondary btn-sm" formaction="close" name="id" 11 value="{{ $item->id }}">非公開にする</button> 12 @else 13 <button class="btn btn-success btn-sm" formaction="open" name="id" 14 value="{{ $item->id }}">公開する</button> 15 @endif 16 17 <button class="btn btn-primary btn-sm" formaction="edit" name="id" 18 value="{{ $item->id }}">編集</button> 19 20 <button class="btn btn-danger btn-sm" onclick="articleDelete(); return false;" formaction="delete" 21 name="id" value="{{ $item->id }}">削除</button> 22 </form> 23 </div> 24 </div> 25 </div> 26@endforeach

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

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

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

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

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

Lhankor_Mhy

2021/10/04 06:29

document.articleOptions には何が入っているのですか?
tabuu

2021/10/04 06:30

form内に「name="submit"」となっている要素が存在しませんか?
Y0shito

2021/10/04 07:06

tabuu様 確認しましたがありませんでした。 Lhankor_Mhy様 私の知識不足のせいか申し訳ないのですが、質問の意味が理解できません... HTML側のarticleOptionのform内に他何が入っているか、ということでしょうか?
tabuu

2021/10/04 07:24

削除のformにactionが設定されていませんが意図的でしょうか? 記事が複数存在する場合はどのように制御されていますか?
Lhankor_Mhy

2021/10/04 07:36

わかりにくくてすみません。 エラーが出ている JavaScript に書かれているコードの document.articleOptions に何が入っているのか、デバッガーなどを用いて実際に確かめてみましたか? ということがお聞きしたかったことです。
Y0shito

2021/10/04 08:27

tabuu様 言葉で説明するよりコード見せたほうが早いと思い、該当コードを追記に載せます。また質問時に大幅にコードを端折ってしまいました。混乱させていまい申し訳ありません。 Lhankor_Mhy様 恥ずかしながらデバッグに関しては指摘を受けて初めて聞いたレベルで、至急デバッグしてみましたが、情報量が凄まじくどの情報を挙げればいいか分からりません。 おそらく期待している回答は不可能かと思います。申し訳ありません。
Lhankor_Mhy

2021/10/04 08:49

でしたら、こちらもお役に立つは難しそうな気がします…… もしかすると、name="articleOptions" がたくさんあるのかもしれないです。 なんとなく、想像ですが。
tabuu

2021/10/04 11:36

他の方も書かれているように、document.articleOptions.submit(); ではどのフォームか判断できないのではないでしょうか。 >記事が1件のみで削除するとログアウトされ、記事は削除されない サーバ側ではおそらくformactionで制御されていると思いますがサーバに送信できていますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問