我有一个包含大量项目的页面,使用表格形式生成。它是一个预算条目表。每个预算条目可能是单个年度预算金额,也可能是一组十二个月的预算金额。
我已经使用“金额类型”选择列表来实现这一点,该列表可以是“年”或“月”,后跟 13 个项目 - 年度金额,然后是一年中每个月的 12 个金额。
如果金额类型为 YEAR,或者用户将其更改为 YEAR,则启用年金额项并禁用月金额。
如果金额类型为 MONTH,或者用户将其更改为 MONTH,则禁用年金额项(同时仍显示已输入的值)。
但是,禁用项目“背后”的值仍然很重要;必须在提交页面时发布;这样一来,如果用户从 MONTH 更改为 YEAR,就会恢复他们原来的年度预算。
现在,以上所有工作都很好。我想补充的是:
- 如果金额类型是 MONTH,我想动态显示(或可能在顶部)(禁用)年度金额项目中的月份项目总数;还,
- 如果金额类型为 YEAR,我想动态获取输入的年度金额,除以 12,然后在每个(禁用的)月度项目中显示结果。
但是,我不想更改每个禁用项目的基础值;发布页面时,应保留禁用项目的原始值,而不是计算版本。
例如,假设用户有一个金额类型 = YEAR 的预算条目,输入的年度金额(并保存到数据库中)为 120,000 美元。数据库中的所有每月金额最初都将为 NULL。
现在,用户将 Amount Type = MONTH 更改为禁用 Annual Amount 项。他们输入一些金额,例如 7 月为 1000 美元,8 月为 2000 美元。当他们保存更改时,数据库将存储 (MONTH, 100000, 1000, 2000, null, ... null) - 换句话说,我保留了旧的年度金额(以防用户翻回年度预算)。但出于显示目的,我希望年度金额项目显示为 3000 美元。
我的问题是,如果我添加一些 javascript 来用所有每月数字的总和填充年度金额项目,我将覆盖 100,000 美元,如果用户返回 YEAR,它不会“恢复”他们原来的年度预算数量。
允许用户在 YEAR 和 MONTH 之间来回切换,并输入两种类型的值;用户输入的所有值都必须保存到数据库中。
所以我想在屏幕上显示一个值,同时在页面发布时将原始值保留在基础项目中。
请注意,我的 javascript 技能是有限的——到目前为止我所做的都是基于大量的谷歌搜索。
tl;博士
我想要一个输入项,当只读时,它在页面上显示一个值,但在提交页面时发布一个不同的值。
甲骨文顶点 4.1
注意:该解决方案必须适用于 IE7,也就是这里的 SOE。