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

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

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

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

Q&A

解決済

1回答

1946閲覧

Jquery validationEngine 複数SUBMITによる切替え

test1234

総合スコア8

jQuery

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

0グッド

0クリップ

投稿2020/11/20 07:03

編集2020/12/10 02:04

フォーム内にSUBMITボタンを2つ実装しています、
「申請する」を押した場合、バリデーションチェックを実行
「一時保存」を押した場合、バリデーションチェックは実行せずに次処理へ
としたいのですが、うまく行きません。ご教示お願い致します。

<script> $(function(){ $('input[type=submit]').on('click',function(event){ let submit_val = $(this).val(); if(submit_val == '申請する'){ //申請するボタンを押したらバリデーションチェック実行 alert('実行1が押されました。'); $('#tori_form').validationEngine(); }else{ // return false; //何も操作しない alert('実行2が押されました。'); event.preventDefault; } }) }) </script> <form action='tori_up.php' name='tori_form' id='tori_form' method='POST' enctype='multipart/form-data'> <INPUT type='submit' name='save' class='toroku' value='申請する'> <INPUT type='submit' name='save' class='save' value='一時保存'>

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

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

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

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

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

FKM

2020/12/09 04:29

ソースの提示お願いします
test1234

2020/12/09 07:40 編集

宜しくお願い致します。 <script> $('form').on('submit',function(){ let submit_val = $(this).find('input[type=submit]').val(); if(submit_val = '申請する'){ //申請するボタンを押したらバリデーションチェック実行 $('#tori_form').validationEngine(); }else{ return false; //何も操作しない } }) </script> ****** <form action='tori_up.php' name='tori_form' id='tori_form' method='POST' enctype='multipart/form-data'> ~~~ <INPUT type='submit' name='toroku' class='toroku' value='申請する'> <INPUT type='submit' name='save' class='save' value='一時保存'> ~~~ ****** 「申請する」を押した場合、バリデーションチェックを実行 「一時保存」を押した場合、バリデーションチェックは実行せずに次処理へ
FKM

2020/12/09 05:18

質問に追記してもらっていいですか。
test1234

2020/12/09 05:33

追記致しました。
guest

回答1

0

ベストアンサー

フォームの操作に対し、submitした値を取得し、Aは実行、Bは実行を阻止すればいいのでは?
同一form内に複数のsubmitが存在する場合はこのように振り分けることが多いです。

追記: 解決したようなので、今後のベンチマークとして解決策を残しておきます。

js

1$(function(){ 2 $(document).on('click','input[type=submit]',function(event){ 3 let submit_val = $(this).val(); 4 if(submit_val == '申請する'){ 5 //申請するボタンを押したらバリデーションチェック実行 6 $('#tori_form').validationEngine(); 7 }else{ 8 event.preventDefault; //何も操作せずに転送 9 } 10 }) 11}) 12 13 14

投稿2020/12/09 02:44

編集2020/12/10 04:38
FKM

総合スコア3633

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

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

test1234

2020/12/09 04:21

ご回答ありがとうございます。状況変わりませんでした。 <script> $('form').on('submit',function(){ let submit_val = $(this).find('input[type=submit]').val(); if(submit_val = '申請する'){ //申請するボタンを押したらバリデーションチェック実行 $('#form').validationEngine(); }else{ return false; //何も操作しない } }) </script> ~~~~ <INPUT type='submit' name='toroku' class='btm' value='申請する'>
FKM

2020/12/09 05:37

nameの値は同じにした方がいいですね。あと分岐はうまくいってますか?
test1234

2020/12/09 05:47

バリデーションチェックは置いておいてですが、submit後の処理でsubmitのname属性で分岐させたいです。name属性を同じ名前にしてもそれは可能でしょうか
FKM

2020/12/09 05:49

nameは同じ名前にしてvalueの値を変えて分岐するようにした方が、むしろいいです。
test1234

2020/12/09 05:57

nameを同じにしましたが、バリデーションチェックが実行されませんでした。分岐がうまくいっていないようです。
FKM

2020/12/09 06:15

アクティブエレメントを取得する方法がぱっと思いつかなかったので、それならフォームよりsubmitボタンで振り分けた方がいいかもしれないので書き換えました。これで分岐は通りますが、バリデーションが通るかはやってみないとなんとも言えません。
test1234

2020/12/09 06:20

バリデーションチェックは通りましたが、「申請する」「一時保存」どちらを押してもバリエーションが入ってしまいます・・・。
FKM

2020/12/09 06:21

分岐はうまくいってますか?
test1234

2020/12/09 06:25

「一時保存」を押してもバリデーションチェックが入ってしまうので、分岐はうまく行っていません。
FKM

2020/12/09 06:26

if文としての分岐がうまくいっているか、まずはそこを確かめてください(間にconsole.logなどを使って)
test1234

2020/12/09 06:32

アラートにて確認しましたが、どちらも「正」を通過しています。
FKM

2020/12/09 07:34

ちょっと修正 submit_val == '申請する' に修正してください。今のままだと必ずtrueを返してしまいます。
test1234

2020/12/09 07:47

ありがとうございます。分岐うまく行きました。しかし、「一時保存」でaction先の「tori_up.php」へ飛ばなくなりました。return falseを削除して試してみましたが、「申請する」でバリデーションチェックに引っかかったあとに「一時保存」を押すとバリデーションチェックが実行されてしまいます(はじめから「一時保存」であれば問題なしですが、運用を考えると「申請する」⇒「一時保存」のパターンも考慮したいです)。
FKM

2020/12/09 07:54

現状、return falseで処理を止めてしまっているので、そこをコメントにしてください
test1234

2020/12/09 07:58 編集

上記記載の通り、コメントアウトも試してみたのですが、「申請する」でバリデーションチェックに引っかかったあとに「一時保存」を押すとバリデーションチェックが実行されてしまいます(はじめから「一時保存」であれば問題なしですが、運用を考えると「申請する」⇒「一時保存」のパターンも考慮したいです)。
FKM

2020/12/09 08:27 編集

preventDefaultでやってみてください。自分の方の簡易テストではうまくいったようですが。 function(event){ // }else{ event.preventDefault; } }
test1234

2020/12/09 08:33

下記でよろしいでしょうか。結果は同じでした。 $(function(event){ $('input[type=submit]').on('click',function(){ let submit_val = $(this).val(); if(submit_val == '申請する'){ //申請するボタンを押したらバリデーションチェック実行 $('#tori_form').validationEngine(); }else{ // return false; //何も操作しない event.preventDefault(); } }) })
FKM

2020/12/09 08:45 編集

eventの引数はイベント実行時です。あと、preventDefault;ですね。jQueryのメソッドじゃないので引数不要。 $(function(){ $('input[type=submit]').on('click',function(event){ let submit_val = $(this).val(); if(submit_val == '申請する'){ //申請するボタンを押したらバリデーションチェック実行 $('#tori_form').validationEngine(); }else{ // return false; //何も操作しない event.preventDefault; } }) })
test1234

2020/12/09 23:46

上記で試させて頂きましたが、「申請する」を押してバリデーションチェックに引っかかった直後に、「一時保存」を押すと再度バリデーションチェックが実行されてしまいます(状況変わらずです)。
FKM

2020/12/10 00:03

どのようなソースになっているかもう一度貼り付けてもらっていいですか。こっちはうまくいってますので。
FKM

2020/12/10 00:13

あと、Chromeの開発コンソールでスクリプトにエラーが表示されていないか確認してください。
test1234

2020/12/10 02:16

ソース更新しました。スクリプトエラーも出ておりません。
FKM

2020/12/10 02:43

validationEngineがイベントを保持している可能性が高いですね。ならば、記述方法をこのように書き換えてみてください。これで駄目なら、ちょっと時間を持って要検証しないと無理っぽいです。 ```js $(document).on('click','input[type=submit]',function(event){ ```
test1234

2020/12/10 04:13

上記リンク先のように指定したらうまく行きました!実はこのリンク先の情報は見て試していたのですが、その際はうまく行きませんでした。FKMさんにご教示頂いた分岐でうまく行きました。助かりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問