页面加载时,我有一个文本框和值。 现在,如果用户在文本框中查找任何内容,那么我想获得更改值(新值)和旧值 但是当我做ELEMENT.value然后它只给出改变的值
任何有关旧价值的建议?
下面是我的代码
<head>
<script type="text/javascript">
function onChangeTest(changeVal) {
alert("Value is " + changeVal.value);
}
</script>
</head>
<body>
<form>
<div>
<input type="text" id="test" value ="ABS" onchange="onChangeTest(this)">
</div>
</form>
</body>
</html>
先谢谢
答案 0 :(得分:156)
您需要手动存储旧值。你可以用很多不同的方式存储它。您可以使用javascript对象存储每个文本框的值,或者您可以使用隐藏字段(我不推荐它 - 太重html),或者您可以在文本框本身使用expando属性,如下所示:
<input type="text" onfocus="this.oldvalue = this.value;" onchange="onChangeTest(this);this.oldvalue = this.value;" />
然后你的javascript函数来处理这个变化看起来像这样:
<script type="text/javascript">
function onChangeTest(textbox) {
alert("Value is " + textbox.value + "\n" + "Old Value is " + textbox.oldvalue);
}
</script>
答案 1 :(得分:67)
element.defaultValue
会为您提供原始值。
请注意,这仅适用于初始值。
如果您需要在每次更改时保留“旧”值,则expando属性或类似方法将满足您的需求
答案 2 :(得分:5)
您应该使用HTML5数据属性。您可以创建自己的属性并在其中保存不同的值。
答案 3 :(得分:3)
我建议:
function onChange(field){
field.old=field.recent;
field.recent=field.value;
//we have available old value here;
}
答案 4 :(得分:2)
我曾经使用过的一个肮脏技巧,就是将变量隐藏在'name'属性中(我通常不会将其用于其他用途):
select onFocus=(this.name=this.value) onChange=someFunction(this.name,this.value)><option...
出乎意料的是,旧值和新值都会提交到someFunction(oldValue,newValue)
答案 5 :(得分:2)
我不确定,但也许这种逻辑可行。
var d = 10;
var prevDate = "";
var x = 0;
var oldVal = "";
var func = function (d) {
if (x == 0 && d != prevDate && prevDate == "") {
oldVal = d;
prevDate = d;
}
else if (x == 1 && prevDate != d) {
oldVal = prevDate;
prevDate = d;
}
console.log(oldVal);
x = 1;
};
/*
============================================
Try:
func(2);
func(3);
func(4);
*/
答案 6 :(得分:0)
也许您可以将文本框的先前值存储到隐藏文本框中。然后,您可以从隐藏中获取第一个值,从文本框本身获取最后一个值。与此相关的替代方法是,在文本框的onfocus事件中,将文本框的值设置为隐藏字段,并在onchange事件中读取之前的值。
答案 7 :(得分:0)
也许您可以尝试使用“onfocus”事件保存旧值,然后使用“onchange”事件将其与新值进行比较。
答案 8 :(得分:0)
您可以这样做:将oldvalue属性添加到html元素,在用户单击时添加set oldvalue。然后onchange事件使用oldvalue。
<input type="text" id="test" value ="ABS" onchange="onChangeTest(this)" onclick="setoldvalue(this)" oldvalue="">
<script>
function setoldvalue(element){
element.setAttribute("oldvalue",this.value);
}
function onChangeTest(element){
element.setAttribute("value",this.getAttribute("oldvalue"));
}
</script>