4

例如,我们有 value="wally" 的 html 输入:

<input type="text" value="wally" />

用户更改后如何获取这个旧的“wally”值(使用 jQuery)?

我尝试使用 .attr()、.prop()、.val() 来获取它,但它们都返回用户输入的新值。

您可以在 jsfiddle 上测试代码。尝试更改输入值并单击“获取”蓝色按钮。

PS jQuery 1.7.2 包含在 jsfiddle 中。

4

6 回答 6

5

defaultValue底层 DOM 元素的使用:

var input = $(this).closest('form').find('input');
console.log(input[0].defaultValue);

更新的小提琴

当然,如果您使用的是 jQuery 1.6 或更高版本,您可以使用prop('defaultValue')它(在早期版本中,attr('defaultValue')可能有效):

var input = $(this).closest('form').find('input');
console.log(input.prop('defaultValue'));

更新的小提琴

于 2012-07-27T09:20:11.627 回答
4

要记住更改之前的值..

$('input').focusin(function(){
   $(this).data('oldValue', $(this).val());
});

并使用..取回它

$('input').change(function(){
   var old = $(this).data('oldValue'); //old value
   var new = $(this).val(); //new value
})

请参阅此处的工作示例

于 2012-07-27T09:19:40.557 回答
0

使用 element.defaultValue; 其中元素当然是输入字段。如果首先使用 JavaScript 填充元素,只需添加一个新的数据属性。

例如 data-defaultValue='wallie'

于 2012-07-27T09:16:49.440 回答
0

您可以将默认值存储在输入元素的数据容器中,然后在用户单击获取按钮时更新该数据值(除非您始终希望访问默认值而不仅仅是最后一个值)。

小提琴:http: //jsfiddle.net/DA67p/4/

于 2012-07-27T09:19:36.077 回答
-1

您可以使用另一个属性,例如:

<input type="text" value="wally" oldVal="wally" />

然后使用

input.attr('oldVal');
于 2012-07-27T09:16:00.853 回答
-1

这个问题有足够的答案。但是,如果您需要代码背后或服务器端的旧值,还有另一种解决方法会有所帮助。

将具有相同值的隐藏字段添加到您的页面。因此,如果您需要旧值,请使用隐藏字段的值。这样做,您将在客户端和服务器端都获得旧值。

于 2012-07-27T09:25:31.810 回答