複数フォームと値コピー
espar form では、同一ページに複数のフォームを配置することができます。これを応用すると、順番にフォームの show / hidden を切り替えることで、設問数の多いアンケートフォームのような振る舞いを実現できます。
その際、あるフォームでの入力値や、入力値から計算された値を、次のフォームに引き継ぎたい場合があります。espar form では、コピークラスと呼ばれる専用のクラスでこれを実現しています。コピークラスを使うと、別のフォームの値や任意要素の値を自動でコピーしてくることができます。
別のフォームの値をコピーする
フォーム1で入力した値をフォーム2の中の input 要素にコピーする…といった用途で使用します。コピー先となる input 要素に以下のようにクラス指定します。
この例では、espf2のフォームが表示された時点で element2-1 の <input> 要素の value が element1-1 の入力値になります。上記例のように、別のフォームから値をコピーしてくるコピークラスの命名規則は以下の通りです。
フォームID | espar form ではフォームIDを全ての要素のprefixとして必ず指定します コピークラスの使用時はコピー先のフォームIDとなります |
コピー元フォームID | コピー元となるフォームのID |
コピー元入力項目のname | コピー元となるフォーム内項目の name 値を指定します |
任意要素の値をコピーする
別のフォームの入力値だけではなく、任意のhtml要素の値をコピーするコピークラスもあります。コピーしたい要素の値が最初は決まっておらず、1つ目のフォームでサブミットされた後に算出された値をコピーしたい場合に便利です。
この例では、espf1がサブミットされた時点で何らかの計算や処理が行われて、result1,result2 のidを持つ <div> 要素が生成される挙動を想定しています。espr2 が表示された時点で、各 <input> 要素に result1, result2 のテキスト要素が最初からコピーされた状態となります。
このように、任意の要素のテキスト要素をコピーしてくるコピークラスの命名規則は以下の通りです。
コピー元の要素idには、別の<form>タグ内の input / select / textarea 要素のidを指定することもできます。その場合、要素の値(value値)がコピーされます。