下記のような支払スケジュールを登録するフォームがあります。
**************************************
<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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
つい集めてしまうものはなんですか?
人間誰もは1つ「やたらこればかり集めてしまう」というものがあるもの。 あなたにとって、つい集めてしまうものはなんですか?
-
【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
2024年は「名探偵コナン30周年」「涼宮ハルヒ20周年」などを迎えますが、 あなたが「もうそんなに!?」と驚いた○○周年を教えてください。
-
とっておきの手土産を教えて
お呼ばれの時や、ちょっとした頂き物のお礼にと何かと必要なのに 自分のセレクトだとついマンネリ化してしまう手土産。 ¥5,000以内で手土産を用意するとしたらあなたは何を用意しますか??
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら「ろうそくの数はあなたが好きな人の数です」と言われ浮気者扱いされたことをいまだに根に持っています。
-
ハマっている「お菓子」を教えて!
この世には、おいしいお菓子がありすぎて……。 次何を食べたらいいか迷っています。 みなさんが今、ハマっている「お菓子」を教えてください!
-
リクエストに応じたselectedの初期値設定方法
Java
-
selectで自動でsubmitボタンを押したみた
HTML・CSS
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
全てのselect要素をデフォルト...
-
VBScriptでHTMLのセレクトボッ...
-
プルダウン選択を変更すると、...
-
selectを変更不可にしたい
-
プルダウンの値によって活性・...
-
スマホのフォームでのselect複...
-
select要素のvalueを配列で取得...
-
<select> をmultiple にしてい...
-
C#(csファイル)とjavascriptと...
-
動的なセレクトボックスの生成...
-
検索窓とプルダウンメニュー機...
-
プルダウンメニューに連動する...
-
連動プルダウンのclonenode
-
JavaScriptの演算について
-
Selectボックスの要素入力を省...
-
return falseが効かない
-
javascriptでセレクトボックス...
-
<input>の選択肢をプルダウンメ...
-
javascriptで合計金額を算出し...
-
Selectボックスの一覧表示方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プルダウン選択を変更すると、...
-
javascriptでセレクトボックス...
-
Selectボックスの一覧表示方法
-
<input>の選択肢をプルダウンメ...
-
selectを変更不可にしたい
-
全てのselect要素をデフォルト...
-
JavaScriptで<select>の<option...
-
select要素のvalueを配列で取得...
-
【javascript】連想配列からセ...
-
複数のプルダウンを1つにまとめ...
-
VBScriptでHTMLのセレクトボッ...
-
<select> をmultiple にしてい...
-
ラジオボタンとプルダウンを連...
-
同じ名前のセレクトがある場合...
-
webページの一部のみの更新につ...
-
javascript:データを日本語で...
-
スマホのフォームでのselect複...
-
ラジオボタンの選択に応じてプ...
-
プルダウンの値によって活性・...
-
selectが変更されたらnameを指...
おすすめ情報
「//回数分の入力欄を出力」
の部分では、できるだけ入力者(スタッフ)の手間を省く為に、毎月の支払日のデフォルト(value値)とする日付をphp側で生成しています。
基本となるデフォルトは毎月25日ですが、その日付が祝日や土日である場合は次の平日の日付を算出してvalueに入れて出力するという処理を、12回が選択された場合は12回ループ処理&HTMLで出力しています。
また、回数によって月の支払額を計算し表示しています。
つまり、選んだ回数や元金、回数毎の手数料、消費税によって出力するHTMLは変わりますので、固定のHTML(入力欄)を切り替える方法は使えません。
登録時に80%は一括での登録になる為、フォームにアクセスした段階では、一括用の入力欄を表示しています。
分割で登録する機能は後から出来るだけUI変更が無いように付け足した為、現在の状態になり稼働しています。
今回の目的も、UIは極力変更せずに「反映」というボタンを押す手間を省いて効率化する事にあります。
<INPUT type="submit" name="bunkatu_set" value="反映">
を削除したら動かなくなってしまいました。
このボタンは消せないのでしょうか?