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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

1386閲覧

投稿ボタンが2回押せてしまう。

rumi

総合スコア46

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2018/02/09 14:38

編集2018/02/11 23:39

現状、投稿するボタンが2回押せてしまうので、onclick="this.disabled = true;"を記載しましたが、まだ2回押せてしまいます。原因がお分かりの方はご教示いただけると幸いです。

(コードを修正)

HTML

1<button type="button" class="btn" data-ele="finish" onclick="this.disabled = true;"> 2 投稿する 3</button>

(追加)

JS

1 2$(document).on('click', '[data-ele="finish"]', function(e) { 3 if ($('#postProjectForm').isValid()) { 4 var activeUploads = $('#fileupload').fileupload('active'); 5 if (activeUploads > 0) { 6 toastr["error"]("Uploads are still in progress. Please wait a little more, enjoy a sip of coffee instead."); 7 } else { 8 submitFormHandlerWithUpload(window.location.href, 'postProjectForm', 'Please wait..',function(data){ 9 if(typeof data.redirect != "undefined" || data.redirect != ""){ 10 setTimeout(function(){ 11 window.location.href = data.redirect; 12 },500); 13 } 14 }); 15 } 16 17 } 18 19}); 20

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

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

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

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

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

s8_chu

2018/02/13 18:43

質問文では説明されていない関数などが使われているようですが、いかがでしょうか?
guest

回答1

0

this.が抜けてます。これを付けないとグローバル変数になってしまいますので。

html

1<button type="button" class="btn" onclick="this.disabled = true;"> 2投稿する 3</button>

【追記】

html

1<button type="button" class="btn" data-ele="finish"> 2投稿する 3</button>

js

1$(function () { 2 3 $('[data-ele="finish"]').click(function () { 4 if (!$('#postProjectForm').isValid()) { 5 return; 6 } 7 if ($('#fileupload').fileupload('active') > 0) { 8 toastr.error('Uploads are still in progress. Please wait a little more, enjoy a sip of coffee instead.'); 9 return; 10 } 11 12 this.disabled = true; 13 14 submitFormHandlerWithUpload(location.href, 'postProjectForm', 'Please wait..', function (data) { 15 if (data.redirect != null && data.redirect !== '') { 16 setTimeout(function () { 17 location.href = data.redirect; 18 }, 500); 19 } 20 }); 21 }); 22 23});

これでどうですか?依然として見えない部分が多いのでだいぶ推測で書いていますが…

※ 外側の $(function () { ... }); で囲っている部分は、すでにもしこれが存在しているのであれば改めて囲う必要はありません。

※ 一応 data-ele 属性を自分で定義しましたが、ライブラリ側で勝手にボタンに付与してくれるのであればこれも書く必要はありません。

投稿2018/02/09 14:40

編集2018/02/12 10:26
mpyw

総合スコア5223

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

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

rumi

2018/02/09 15:53

ありがとうございます。thisを入れてみましたが、2回以上押せてしまいます。
退会済みユーザー

退会済みユーザー

2018/02/09 16:00

confirme 入れるのが一番現実的なんだよなぁ(これも隙間があるが)
mpyw

2018/02/09 20:01

https://jsfiddle.net/m8sgr7ma/  ↑のソースコピペして動作確認しましたが普通に動きます。再現できないですね… 明らかにほかの部分が影響及ぼしてそうなのでソース全体見ないと何とも言えない感じ
mpyw

2018/02/09 20:03

<button type="button" class="btn" onclick="console.log('クリックされました');this.disabled = true;"> 投稿する </button> これでデバッグコンソールに「クリックされました」と本当に2回以上表示されていますか?
rumi

2018/02/11 16:39 編集

ありがとうございます。console.logで試したところ、1回だけ「クリックされました」と表示されます。 ただし、この場合は投稿はできないため、ほかの部分(投稿後のリダイレクトなど)が影響してそうですので、現在確認しております。
rumi

2018/02/11 23:40

こちら、関連するJavascriptのコードを追加しました。宜しくお願い申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問