• 解決済 nujawak

    (@nujawak)


    MW WP Formを利用してフォームを作成しているのですが、少し詰まってしまったのでご相談です。

    作成しているのはイベントの申し込みフォームで、日付とイベント名を連動させたいと考えています。
    全体の流れとしては以下です。

    1. 「name=”date”」と「name=”title”」の2つのセレクトボックスを設置
    2. いずれも、フォームの作成時点ではchildren=”–“
    3. dateは、mwform_choices_mw-wp-form-xxxmwform_value_mw-wp-form-xxxのフックで条件に合わせてoptionを作成
    4. titleのoptionは–だけのまま
    5. ユーザーがdateを変更すると、Ajaxでカスタム投稿を検索してtitleのoptionを追加

    ここまではうまくいきました。
    ただ、dateとtitleを選択して確認ページへ移動すると、dateは問題ないのですが、titleの値が表示されないのです。
    気にせず送信をすると、titleはDBにも保存されませんでした。

    フォーム投稿ページでは、Ajaxしたのちにhiddenフィールドのname=”__children[title][]”のvalueも{“–“:”–“,”xxx”:”xxx”,”xxx”:”xxx”}の形で更新しています。unicodeデコードもしました。
    この値が確認ページへ引き継がれず、DBにも保存できずにいます。

    確認ページで要素検証をおこなうと、hiddenのname=”title”に選択した値は入っていました。
    ただ、hiddenのname=”__children[title][]”のvalueが{“–“:”–“}だけになっています。作成画面で設定した値だけで、Ajax後に追加した値がありませんでした。
    なお、エラーページの場合は、__children[title][]の値は残っていました。

    どうすればDB保存まで可能になるでしょうか。

    確認ページで$_POSTの値を覗くも空で、詰まってしまいました。
    確認ページやエラーページへどのような方法でデータのやりとりをしているのでしょうか。
    そこへ干渉する方法はあるでしょうか。
    少しでもヒントを頂けると大変嬉しいです。

    よろしくお願いします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • セレクトボックス等が出力する children の hidden フィールドは、(入力画面・確認画面ともに)作成画面で定義された情報をもとに生成・出力されるため、入力画面で書き換えても確認画面に引き継がれません。

    そのため、ajax で検索して動的に書き換えるアプローチは恐らく実現できませんので、全ての選択肢を出力しておいて CSS、JS で出し分けるアプローチで実装するのが現実的かなと思います。

    トピック投稿者 nujawak

    (@nujawak)

    返信ありがとうございます!
    おかげさまで解決しました!

    hidden フィールドを追加して、それを DB へ保存することで対応しました。
    title のセレクトボックスが変更にされた際に、 title の値を hidden フィールドへ挿入しました。 hidden の作成オプション echo=”true” で確認画面の表示させました。

    最後に、標準で高機能なうえ、フックとそのマニュアルが豊富で感動しました。
    この場を借りて御礼申し上げます。

    このトピックは解決済みと致します。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「[MW WP Form]JavaScriptで追加したセレクトボックスの値を確認ページにも引き継」には新たに返信することはできません。