表形式を使用して生成された、多数のアイテムを含むページがあります。予算内訳表です。各予算エントリは、単一の年間予算額の場合もあれば、12 の月間予算額のセットの場合もあります。
私はこれを「年」または「月」のいずれかである「金額タイプ」選択リストで実装し、その後に13項目が続きます.年間金額とその年の各月の12金額が続きます。
Amount Type が YEAR の場合、またはユーザーが YEAR に変更した場合、年間金額項目が有効になり、月額項目が無効になります。
Amount Type が MONTH の場合、またはユーザーが MONTH に変更した場合、年間金額項目は無効になります (入力された値は引き続き表示されます)。
ただし、無効なアイテムの「背後」にある値は依然として重要です。ページの送信時に投稿する必要があります。これは、ユーザーが MONTH から YEAR に戻った場合に、元の年間予算が復元されるようにするためです。
さて、上記のすべてがうまく機能します。追加したいのは次のとおりです。
- Amount Type が MONTH の場合、(無効化された) 年額アイテム内(またはおそらく上)に月アイテムの合計を動的に表示したいと思います。また、
- Amount Type が YEAR の場合、入力された年間金額を動的に取得し、12 で割って、(無効な) 月次項目のそれぞれに結果を表示したいと思います。
ただし、無効になっている各アイテムの基になる値を変更したくありません。ページが投稿されると、計算されたバージョンではなく、無効化されたアイテムの元の値が保持されます。
たとえば、ユーザーが金額タイプ = YEAR の予算エントリを持ち、年間金額が $120,000 であるとします (データベースに保存されます)。すべての月額は、最初はデータベース上で NULL になります。
ここで、ユーザーは金額タイプ = MONTH を変更します。これにより、年間金額項目が無効になります。たとえば、7 月に 1000 ドル、8 月に 2000 ドルなど、いくつかの金額を入力します。彼らが変更を保存すると、データベースには (MONTH, 100000, 1000, 2000, null, ... null) が保存されます。バジェット)。しかし、表示目的のために、年間金額項目に $3000 を表示したいと思います。
私の問題は、JavaScript を追加して年間金額項目にすべての月額の合計を入力すると、$100,000 が上書きされ、ユーザーが YEAR に戻った場合、元の年間予算が「復元」されないことです。額。
ユーザーは YEAR と MONTH の間を行ったり来たりすることができ、両方のタイプの値を入力できます。ユーザーが入力するすべての値をデータベースに保存する必要があります。
そのため、ページが投稿されたときに元の値を基になるアイテムに保持しながら、画面に 1 つの値を表示したいと思います。
JavaScript に関する私のスキルには限界があることに注意してください。これまでに行ったことは、多くのグーグル検索に基づいています。
tl;dr
readOnly の場合はページに 1 つの値を表示するが、ページが送信されると別の値を投稿する入力項目が必要です。
オラクル頂点4.1
注: このソリューションは、ここでは SOE である IE7 で動作する必要があります。