Ich habe ein Textfeld und einen Wert, der beim Laden der Seite ausgefüllt wird. Wenn der Benutzer etwas im Textfeld ändert, möchte ich den geänderten Wert (neuer Wert) und den alten Wert abrufen. Wenn ich jedoch ELEMENT.value ausführe, wird nur der geänderte Wert angegeben
Irgendwelche Vorschläge, um alten Wert zu bekommen?
Unten ist mein Code
<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>
Danke im Voraus
javascript
html
validation
CFUser
quelle
quelle
Sie müssen den alten Wert manuell speichern. Sie können es auf viele verschiedene Arten speichern. Sie könnten ein Javascript-Objekt verwenden, um Werte für jedes Textfeld zu speichern, oder Sie könnten ein verstecktes Feld verwenden (ich würde es nicht empfehlen - zu html-schwer), oder Sie könnten eine expando-Eigenschaft für das Textfeld selbst verwenden, wie folgt:
Dann sieht Ihre Javascript-Funktion zur Handhabung der Änderung folgendermaßen aus:
quelle
Ich würde vorschlagen:
quelle
Sie sollten HTML5-Datenattribute verwenden. Sie können Ihre eigenen Attribute erstellen und darin verschiedene Werte speichern.
quelle
Ein schmutziger Trick, den ich manchmal benutze, ist das Ausblenden von Variablen im Attribut 'name' (das ich normalerweise nicht für andere Zwecke verwende):
Etwas unerwartet wird dann sowohl der alte als auch der neue Wert übergeben
someFunction(oldValue,newValue)
quelle
Ich bin nicht sicher, aber vielleicht würde diese Logik funktionieren.
quelle
Sie können dies tun: Fügen Sie dem HTML-Element das Attribut oldvalue hinzu, fügen Sie beim Klicken des Benutzers den Wert oldvalue hinzu. Verwenden Sie dann bei einem Änderungsereignis den alten Wert.
quelle
Möglicherweise können Sie den vorherigen Wert des Textfelds in einem versteckten Textfeld speichern. Dann können Sie den ersten Wert aus versteckt und den letzten Wert aus dem Textfeld selbst abrufen. Eine Alternative dazu: Setzen Sie beim onfocus-Ereignis Ihres Textfelds den Wert Ihres Textfelds auf ein ausgeblendetes Feld und lesen Sie beim onchange-Ereignis den vorherigen Wert.
quelle
Vielleicht können Sie versuchen, den alten Wert mit dem Ereignis "onfocus" zu speichern, um ihn anschließend mit dem neuen Wert mit dem Ereignis "onchange" zu vergleichen.
quelle