例如,我们有值=“沃利” HTML输入:如何在用户更改后获得实际输入值(使用jQuery)?
<input type="text" value="wally" />
如何得到这个老“沃利”值用户后(使用jQuery)改变呢?我试图用.attr(),.prop(),.val()得到它,但是它们都返回用户输入的新值。您可以测试code on jsfiddle。尝试更改输入值并单击“获取”蓝色按钮。
P.S.包含在jsfiddle中的jQuery 1.7.2。
例如,我们有值=“沃利” HTML输入:如何在用户更改后获得实际输入值(使用jQuery)?
<input type="text" value="wally" />
如何得到这个老“沃利”值用户后(使用jQuery)改变呢?我试图用.attr(),.prop(),.val()得到它,但是它们都返回用户输入的新值。您可以测试code on jsfiddle。尝试更改输入值并单击“获取”蓝色按钮。
P.S.包含在jsfiddle中的jQuery 1.7.2。
底层DOM元素的使用defaultValue
:
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'));
你可以使用像另一个属性:
<input type="text" value="wally" oldVal="wally" />
然后用
input.attr('oldVal');
oldVal不是有效的属性。 data-oldval会是。 – 2012-07-27 09:19:14
这没有必要。 – 2012-07-27 09:21:17
使用element.defaultValue;元素当然是输入字段。 如果首先使用JavaScript填充元素,只需添加一个新的数据属性即可。
例如数据默认值=“wallie”
你可以存储在输入元素的数据容器的默认值,那么当用户点击Get按钮(除非你总是希望更新的数据值有权访问默认值,而不仅仅是最后一个值)。
要记住的值修改前..
$('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。
尝试改变输入值几次,每次“oldValue”将被改变。最好在页面加载后记住“oldValue”一次。 – webvitaly 2012-07-27 09:39:37
这个问题有足够的答案。 但是,如果您需要代码背后或服务器端的旧值,那么还有其他解决方法会很有帮助。
为您的页面添加一个具有相同值的隐藏字段。所以如果你需要旧值使用隐藏字段的值。这样做,您将在客户端和服务器端获得旧值。
downvoter请告诉downvoting的原因吗? – Narendra 2012-07-27 11:19:00
你可能对它有更多的经验,是否有'.getAttribute('value')'的跨浏览器问题? – 2012-07-27 09:21:51
@FelixKling:就我可以扔掉史蒂夫鲍尔默而言,我不会相信IE,特别是IE7。而我知道'defaultValue'已经工作了15个多年。我*认为*我尝试了'getAttribute',发现它不可靠,但我必须做一个实验才能确定。 – 2012-07-27 09:22:35
这不是很远......;)谢谢! – 2012-07-27 09:23:38