2012-07-27 52 views
3

例如,我们有值=“沃利” HTML输入:如何在用户更改后获得实际输入值(使用jQuery)?

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

如何得到这个老“沃利”值用户后(使用jQuery)改变呢?我试图用.attr(),.prop(),.val()得到它,但是它们都返回用户输入的新值。您可以测试code on jsfiddle。尝试更改输入值并单击“获取”蓝色按钮。

P.S.包含在jsfiddle中的jQuery 1.7.2。

回答

5

底层DOM元素的使用defaultValue

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

Updated fiddle

和当然,如果你使用jQuery 1.6或更高版本,可以使用prop('defaultValue')为(及更早版本,attr('defaultValue')可能有效):

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

Updated fiddle

+0

你可能对它有更多的经验,是否有'.getAttribute('value')'的跨浏览器问题? – 2012-07-27 09:21:51

+0

@FelixKling:就我可以扔掉史蒂夫鲍尔默而言,我不会相信IE,特别是IE7。而我知道'defaultValue'已经工作了15个多年。我*认为*我尝试了'getAttribute',发现它不可靠,但我必须做一个实验才能确定。 – 2012-07-27 09:22:35

+0

这不是很远......;)谢谢! – 2012-07-27 09:23:38

-1

你可以使用像另一个属性:

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

然后用

input.attr('oldVal'); 
+0

oldVal不是有效的属性。 data-oldval会是。 – 2012-07-27 09:19:14

+0

这没有必要。 – 2012-07-27 09:21:17

0

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

例如数据默认值=“wallie”

0

你可以存储在输入元素的数据容器的默认值,那么当用户点击Get按钮(除非你总是希望更新的数据值有权访问默认值,而不仅仅是最后一个值)。

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

+0

尝试改变输入值几次,每次“oldValue”将被改变。最好在页面加载后记住“oldValue”一次。 – webvitaly 2012-07-27 09:41:21

+0

我更新了代码:http://jsfiddle.net/webvitaly/DA67p/7/ – webvitaly 2012-07-27 09:43:16

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 
}) 

见工作example here

+0

尝试改变输入值几次,每次“oldValue”将被改变。最好在页面加载后记住“oldValue”一次。 – webvitaly 2012-07-27 09:39:37

-1

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

为您的页面添加一个具有相同值的隐藏字段。所以如果你需要旧值使用隐藏字段的值。这样做,您将在客户端和服务器端获得旧值。

+0

downvoter请告诉downvoting的原因吗? – Narendra 2012-07-27 11:19:00

相关问题