
下記のような支払スケジュールを登録するフォームがあります。
**************************************
<form method="post" name="calendar_add" action="">
<input type="text" name="名前" value=""><br>
<input type="text" name="金額" value=""><br>
<select name="分割回数">
<option value="" selected="selected">一括</option>
<option value="2">2回</option>
<option value="3">3回</option>
<option value="4">4回</option>
<option value="5">5回</option>
<option value="6">6回</option>
<option value="12">12回</option>
<option value="24">24回</option>
<option value="36">36回</option>
</select>
<INPUT type="submit" name="bunkatu_set" value="反映"><br>
変更したら「反映」を先に押して下さい。<br>
<?php
if($_POST["bunkatu_set"]){
//回数分の入力欄を出力
}else{
//一括の入力欄を出力
}
?>
<input type="submit" name="kakunin" value="登録確認">
</form>
**************************************
現在は分割回数を変更した後、「反映」を押してもらい入力欄の生成をしていますが、
プルダウン(select)を変更した場合は自動的に「name="bunkatu_set"」でsubmitしたいです。
javascriptやその他方法で行える方法はありますでしょうか?
No.3ベストアンサー
- 回答日時:
>スタッフしか利用しないので大丈夫
であれば、こんなんでどう
><select name="分割回数">
↓↓↓
<select name="分割回数" id="kaisu" onchange="this.form.elements['bunkatu_set'].click()">
ちなみにnameに漢字(バイナリ文字)を使うと思った通りにデータが受け取れない場合があるのでご注意ください
バッチリ動きました!
やはりjavascript便利ですね。
phpばかりでなくjavascriptも頑張って勉強します。
ありがとうございます!
>ちなみにnameに漢字(バイナリ文字)を使うと思った通りにデータが受け取れない場合があるのでご注意ください
承知しており、本番のものは半角英字にしておりますので大丈夫です。お気遣いありがとうございます。
No.5
- 回答日時:
分割回数の選択肢が10個程度なら、全部計算して表示させても性能的に問題ない気がしますが、
ご希望に沿う形で処理させるなら
クライアント側
<script>
function 分割を選んだ(sel) {
_ var form = sel.form;
_ form.elements['送信区分'].value = '分割回数を選んだ';
_ form.submit();
}
</script>
<form action=ほげ>
<input type=text name=金額> ...
<select name=分割回数 onchange='分割を選んだ(this)'> ... </select>
<!-- 分割回数に従った入力欄 -->
<input type=hidden name=送信区分 value=登録確認を押した>
<input type=submit value=登録確認>
</form>
サーバー側
if ($_POST['送信区分'] == '登録確認を押した') {
_ 登録処理
}
if ($_POST['送信区分'] == '分割回数を選んだ') {
_ 分割回数に従った入力欄を生成して画面再描画
}
No.4
- 回答日時:
<INPUT type="submit" name="bunkatu_set" value="反映">
↓↓↓
<INPUT type="submit" name="bunkatu_set" value="反映" style="display:none">
とするとか・・・
まぁsubmitを表示しないなら、bunkatu_setをhiddenで受け渡すとか・・・・
<form>
<input type="text" name="名前" value=""><br>
<input type="text" name="金額" value=""><br>
<select name="分割回数" id="kaisu" onchange="this.form.submit()">
<option value="" selected="selected">一括</option>
<option value="2">2回</option>
<option value="3">3回</option>
<option value="4">4回</option>
<option value="5">5回</option>
<option value="6">6回</option>
<option value="12">12回</option>
<option value="24">24回</option>
<option value="36">36回</option>
</select>
<INPUT type="hidden" name="bunkatu_set" value="反映">
</form>
No.2
- 回答日時:
自動でサブミットするのはUIとして最悪
自分が承認したつもりもないのにデータが提出されているの許せます?
たとえばajaxで入力欄を呼び出すなどでもよいかも
もしくは一般的な入力欄と分割後の入力をページ分けするとかで対応してください
BtoCのアプリではそういった懸念があることは承知しています。
今回は社内の顧客管理アプリで、スタッフしか利用しないので大丈夫です。
今回の目的は、スタッフの作業効率を少しでも上げるのが目的なので、
ページ別けするとUIが大きく変わり逆に手間が増えてしまうのでダメなのです。
80%は一括での処理なので、そちらには一切変更が無いように改善したいです。
No.1
- 回答日時:
サーバー側にて、回数分の入力欄と一括の入力欄をあらかじめ用意しておき、
<select> が change イベントを発生させた際に表示を切り替えるだけ
の方法をオススメします。
<script>
function 分割を選んだ(sel){ document.getElementById(表示させたい要素のid).style = 'display:block'; }
</script>
<select onchange='分割を選んだ(this)'>..</select>
<div id=回数分の入力欄 style='display:none'> ... </div>
<div id=一括の入力欄 style='display:none'> ... </div>
ありがとうございます。
単純なHTMLを切り替えるだけでしたら
それで対応できるのですが、
「//回数分の入力欄を出力」
の部分では、できるだけ入力の手間を省く為に、毎月の支払日のデフォルト(value値)とする日付をphp側で生成しています。
基本となるデフォルトは毎月25日だけど、その日付が祝日や土日である場合は次の平日の日付を算出してvalueに入れて出力するという処理を、12回が選択された場合12回ループ処理しています。
また、回数によって月の支払額を計算し表示しています。
つまり、選んだ回数や元金によって出力するHTMLは変わります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript console.logがどうしても2つ機能しないのでアドバイスをくださいお願いします 2 2022/07/07 22:13
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript JavascriptからSQLへ繋ぎ方が分からない 3 2022/07/07 00:27
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- JavaScript 電車の運賃を出すプログラムを作っています。 2 2022/06/22 09:36
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セレクトメニューの値の取得
-
JavaScriptで次のような動作を...
-
New OPTIONで作った<Select>の<...
-
複数条件の入力チェックについて
-
全てのselect要素をデフォルト...
-
selectのすべての値を送信する方法
-
ホームページ作成 自動見積計算
-
C#(csファイル)とjavascriptと...
-
javascript:データを日本語で...
-
selectを変更不可にしたい
-
hiddenに値を設定する方法
-
複数のプルダウンを1つにまとめ...
-
HTMLのフォーム名とJavaScript...
-
追加ボタンを押した際に ok ボ...
-
Java Scriptで・・・
-
プルダウンメニューの項目で1つ...
-
tableの任意行にfocusをあてる
-
特定<table>内の<td>の色を変える
-
チェックボックス付きのテーブ...
-
大文字か小文字かを判断する方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プルダウン選択を変更すると、...
-
<input>の選択肢をプルダウンメ...
-
スマホのフォームでのselect複...
-
同じ名前のセレクトがある場合...
-
selectを変更不可にしたい
-
javascriptでセレクトボックス...
-
3つの連動したプルダウンメニュ...
-
Selectボックスの一覧表示方法
-
全てのselect要素をデフォルト...
-
リストボックス内の重複したも...
-
ラジオボタンの選択に応じてプ...
-
addclassがうまく働きません
-
ラジオボタンとプルダウンを連...
-
セレクトボタンで特定の項目で...
-
VBScriptでHTMLのセレクトボッ...
-
【javascript】連想配列からセ...
-
連想配列からセレクトボックス...
-
JavaScriptで<select>の<option...
-
セレクトボックスの初期選択と...
-
セレクトボックスで配列を呼び...
おすすめ情報
「//回数分の入力欄を出力」
の部分では、できるだけ入力者(スタッフ)の手間を省く為に、毎月の支払日のデフォルト(value値)とする日付をphp側で生成しています。
基本となるデフォルトは毎月25日ですが、その日付が祝日や土日である場合は次の平日の日付を算出してvalueに入れて出力するという処理を、12回が選択された場合は12回ループ処理&HTMLで出力しています。
また、回数によって月の支払額を計算し表示しています。
つまり、選んだ回数や元金、回数毎の手数料、消費税によって出力するHTMLは変わりますので、固定のHTML(入力欄)を切り替える方法は使えません。
登録時に80%は一括での登録になる為、フォームにアクセスした段階では、一括用の入力欄を表示しています。
分割で登録する機能は後から出来るだけUI変更が無いように付け足した為、現在の状態になり稼働しています。
今回の目的も、UIは極力変更せずに「反映」というボタンを押す手間を省いて効率化する事にあります。
<INPUT type="submit" name="bunkatu_set" value="反映">
を削除したら動かなくなってしまいました。
このボタンは消せないのでしょうか?