存储原始表单值以供以后比较,对象或隐藏字段

时间:2013-01-28 11:43:00

标签: javascript jquery html input

我即将重写几年前写的一个脚本,它会检查表单是否有任何更改,以便显示“你想保存更改吗?”等消息......

我的问题是,很简单,我应该将原始值存储在隐藏的表单字段或Javascript对象中吗?哪种方法更有效?

以下是使用隐藏字段方法的示例:

<input type="text" name="first_name" id="first_name" value="John Smith" />
<input type="hidden" name="first_name_old" id="first_name_old" value="John Smith" />

javascript对象替代:

var old_values = {
    'first_name': 'John Smith'
}

2 个答案:

答案 0 :(得分:1)

在JavaScript对象中存储值更加透明和可维护,但意味着更多的代码结构,而不是存储在隐藏字段或数据属性中。 如果您正在构建一个更大的前端应用程序,那么在HTML中存储所有类型的值很快就会变得一团糟,需要大量调用来修改DOM。

如果有效意味着速度,你应该制定一个基准,哪一个更快。但是如果你没有更新这个值,通常这个微优化可以忽略不计,它会使代码的可维护性降低。

答案 1 :(得分:0)

您可以将其存储为同一元素的data属性。

修改

很抱歉误会,您可以像这样存储

<input type="text" name="first_name" id="first_name" value="John Smith" data-old_value="John Smith" />

然后

$('#first_name').data('old_value');

将为您提供旧值