札幌Web制作のシンクグラフィカ

動的に追加した項目が確認画面に表示されない

FTさん (2015-02-16 15:21:16) www.ecodigi.net/test/example.html

添付画像アドオンなどでもお世話になっております。

フォームの設問を動的に増やし、name属性やmpf_elementなどのIDの
書き換えを行ったのですが、新たに増やした設問のみ確認画面に
反映されません。
(なお、送信した後のメールには反映されています)

これを確認画面に反映させる手立てはありますでしょうか。
ご教示いただけますと幸いでございます。

ご多用のところ恐縮ですが、何卒よろしくお願い申し上げます。

Re:動的に追加した項目が確認画面に表示されない

和田 (2015-02-17 06:45:49) www.synck.com

動的に項目の追加ですね。
メールフォームプロは仕様上、最初の読み込み時に初期設定を行っているため、その設定自体に手を入れる必要があります。
具体的には
mfp.Elementsというオブジェクトにオブジェクトを追加する必要があります。
具体的には以下のような感じです。(eはエレメントオブジェクト)
mfp.Names.push(e.name);
mfp.Elements[e.name] = new Object();
mfp.Elements[e.name].group = new Array(e.id);
mfp.Elements[e.name].type = type;
mfp.Elements[e.name].required = required;
mfp.Elements[e.name].err = mfp.$(err);
mfp.Elements[e.name].min = e.getAttribute(’data-min’);
mfp.Elements[e.name].max = e.getAttribute(’data-max’);

エレメントを増やした場合はmfp.Names配列にnameをpushし、mfp.Elements連想配列に各値を追加します。汚いソースですいません・・・。

その他のやり方としては、増やすのではなく隠していたものを表示する、というやり方や、不可視エレメントの値をいぢるやり方などがあります。もうちょっとわかりやすく増やせたほうがいいですよね・・・。

Re:動的に追加した項目が確認画面に表示されない

FTさん (2015-02-17 09:00:04) www.ecodigi.net/test/example.html

早々のご返信をいただきまして誠にありがとうございます。

本当に恐縮なのですが、私の無知ゆえに折角ご教示いただいた内容を
実装することができませんでした。

和田様が仰っているのはページ読み込み時にmfp.cache.jsで
行っている初期設定に、追加されたエレメントを足していくということだと
理解をしたのですが、動的な項目追加もjQueryを学びながらなんとか
足している状況のため、面目ないのですが、どこにどう足せばというのがわかりませんでした。

これまで設問の追加・削除は、和田様のアドバイスにあった通り、
もともとHTMLに書いてあったものを表示・非表示することで
賄っておりましたが、今回作成したいフォームの機能として、
最初の設問の回答内容によってその後の設問内容を変えるというものを
実装したいと考えており、従来のやり方での実現が難しく感じたため、
今回質問させていただくに至りました。

つきましては、設問の追加・削除にともないオブジェクトの追加を行う設定が
されたファイルを作成いただくことはできませんでしょうか。

もし、可能な場合は費用についてお見積りをいただけますと
幸いでございます。

今回、設置URLに記載しておりますテストページでは、
jQueryで単一のフォーム部品を追加しているのですが、
実際に作成したフォームでは、複数のフォーム部品をくくっている
divをクローンして、同時に複数のフォーム部品追加することも
行っており、そちらにも対応することが要件となっております。

ご多用のところ、度々お手数をおかけいたしますが、
上記につきましてご検討いただけますと幸いです。

何卒よろしくお願い申し上げます。

長文失礼いたしました。

Re:動的に追加した項目が確認画面に表示されない

FTさん (2015-02-17 10:39:45) www.ecodigi.net/test/example.html

度々の投稿失礼いたします。

先ほどの投稿では、内容にお見積りの依頼も含めて
お送りさせていただいたのですが、
ご返信はメールに直接お送りいただければと存じます。

お手数をおかけし恐縮でございますが、
何卒よろしくお願いいたします。