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

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

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

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

Q&A

解決済

1回答

658閲覧

jqueryでsubmitができない

monkeybanana

総合スコア1

jQuery

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

0グッド

0クリップ

投稿2021/11/11 11:15

編集2021/11/11 23:40

サブ画面でチェックボックスを複数選択し、選択完了ボタンで親画面に戻るという処理を作っています。
選択完了ボタンでチェックボックスのチェックの数が0でなかったらsubmitするようにしたのですが、submitできません。
状況はsubmit直前でalertは表示され、選択完了ボタンをクリックするとサブ画面は終了します。
開発者ツールのコンソールにエラーは出ません。 

以下のソースで悪いところをご指摘いただけないでしょうか。

$('#select').click( function() {
// チェックされているチェックボックスの数
if ($('input[class="chk"]:checked').length > 0) {
$('#SELECT_FORM').submit();
window.close();
} else {
// チェックなしの警告
alert('チェックボックスにチェックを入れてください。');
return false;
}
});

<html> <form name="SELECT_FORM" id="SELECT_FORM" action="プログラム" method="POST"> <center> <table class="noline2" width="430"> <tr> <td align="left"> <input type="button" class="btn_selectclear btn_s lov" name="allclear" id="allclear" value="選択クリア"> <input type="button" class="btn_selectall btn_s lov" name="allchk" id="allchk" value="全選択"> </td> <td align="right"> <input type="button" class="btn_selectend btn_s lov" name="select" id="select" value="選択完了"> <input type="button" class="btn_close btn_s lov" name="close" id="close" value="閉じる" onclick="window.close()"> </td> </tr> </table> <br> <table class="select" border="1" width="400" cellspacing="0"> <tr> <th class="title_k" width="50">コード</th> <th class="title_k" width="300">名称</th> <th class="title_k" width="50">選択</th> </tr> <tr> <td class="td_k inp_c"> 1</td> <td class="td_k">ああああ</td> <td class="td_k inp_c"><input type="checkbox" name="CHECK001" id="CHECK001" class="chk" ></td> </tr> <tr> <td class="td_k inp_c"> 2</td> <td class="td_k">いいいい</td> <td class="td_k inp_c"><input type="checkbox" name="CHECK002" id="CHECK002" class="chk" ></td> </tr> <tr> <td class="td_k inp_c"> 3</td> <td class="td_k">うううう</td> <td class="td_k inp_c"><input type="checkbox" name="CHECK003" id="CHECK003" class="chk" ></td> </tr> </table> </center> </form> </html>

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

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

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

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

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

int32_t

2021/11/11 13:13 編集

期待に反してsubmitできない場合、何が起きるのですか? - alert() が出る? - ブラウザの開発者ツールのコンソールにエラーが出る? - ウィンドウが閉じる? 問題を再現できる完全なコードとHTMLがあったほうが、悪いところの指摘が容易になりそうです。
monkeybanana

2021/11/11 23:42

ご指摘ありがとうございます。 htmlと状況を追記しましたので、見ていただけると助かります。
int32_t

2021/11/11 23:47

> クリックするとサブ画面は終了します。 ということは、window.close(); まで実行されているはずですよね。「submitできない」というのはどうやって判断しました?
monkeybanana

2021/11/12 01:22

プログラム側に区分を渡してプログラム内で区分のアラートを出すようにしてみたのですが、プログラムが無反応なのでjQueryかなと判断しました。
guest

回答1

0

ベストアンサー

js

1$('#SELECT_FORM').submit(); 2window.close();

おそらく、この2行が原因です。
submit() はフォームの送信を予約するだけで、実際の送信は非同期に行われます。予約だけしている状態で window.close() で window を閉じて document が破棄されてしまうため、フォーム送信がキャンセルされているのだと思われます。

フォーム送信が終わってからwindow.close()を呼ぶ必要があるので、

  • action="プログラム" が返すHTMLの中で window.close() する、
  • この window の unload イベントで window.close() を呼ぶ、または
  • <iframe> を作りフォームの送信ターゲットをその<iframe>にし、<iframe>load イベントで window.close() を呼ぶ

などとする必要があると思います。

投稿2021/11/12 01:33

int32_t

総合スコア21012

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

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

monkeybanana

2021/11/12 02:09

ありがとうございます!! いくつもやり方を教えていただいてうれしいです。 初心者なので、説明もわかりやすくて助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問