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

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

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

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

1179閲覧

jQueryで2重サブミット対策を入れたら、フォームのバリューが受け取れなくなった

masa_1111

総合スコア7

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2018/02/01 06:23

編集2018/02/01 06:25

前提・実現したいこと

2重サブミット対策を行ったうえでサブミットの値を取得したい

Djangoでwebアプリを作っています。
2重サブミット対策としてHTMLに<script>を書き込んだら今まで取得できていた
submitのvalueが取得できなくなりました。

書いたJavaScriptsの記述としては
一度ボタンを押したらボタンが非活性化し、10秒後に活性化する
という意味だけだと考えています。

これはまず記述したJavaScriptsの意味を間違っているのでしょうか?
取得する方法などものもの教えてほしいです。

該当のソースコード

HTML

1<form action="{% url 'get_test' %}"> 2    <button type="submit" name="test" value="{{id}}" class="form-control">テスト</button> 3</form> 4<script> 5    $("form").submit(function() { 6        var self = this; 7        $(":submit", self).prop("disabled", true); 8        setTimeout(function() { 9            $(":submit", self).prop("disabled", false); 10        }, 10000); 11    }); 12</script> 13

Python

1id = request.GET["test"]

###エラー
Exception Type: MultiValueDictKeyError
Exception Value: "'test'"

補足情報(FW/ツールのバージョンなど)

Django : 1.11.9
Python : 3.6.4
jQuery : 1.11.3

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

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

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

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

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

guest

回答2

0

ベストアンサー

disabledを設定した値は送られません。
ボタンの値が重要であるなら、disabledではなく、pointer-events:noneを使ってみてはどうでしょうか?
https://developer.mozilla.org/ja/docs/Web/CSS/pointer-events

投稿2018/02/01 06:52

x_x

総合スコア13749

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

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

masa_1111

2018/02/01 08:28

回答ありがとうございます! disabledを勝手にただボタンを押せなくするものだと思い込んでました・・・ ボタンを押したときにaddClassし、pointer-events:noneを適応させる方向で行きたいと思います
guest

0

http://js.studio-kingdom.com/jquery/events/submit#0

$("form").submit(function() {
if ($("input:first").val() == "correct") {
$("span").text("検証...").show();
return true;
}
$("span").text("入力に誤りがあります!").show().fadeOut(1000);
return false;
});

1.9の日本語リファレンスによると、$().submitに渡した関数は、 戻り値が`true`か`false`かでサブミット成功か取り消しかを判定しているようです。 素のJavaScriptでも同じ挙動だったような… 一度`true`を返すように修正して確認して見てください。

投稿2018/02/01 09:03

miyabi-sun

総合スコア21158

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問