Lars Grove Mortensen <spam@grove-mortensen.dk> writes:
> I forbindelse med en form-validator, kunne jeg godt tænke mig at
> tjekke, om der overhovedet er lavet ændringer i formularen.
>
> Ved søgning på nettet har jeg fundet nedenstående kode, men så
> skal jeg jo definere hver enkelt element i formen (og huske at
> redigere dette ved ændringer, etc. etc.
>
> Er der mon nogen, der kan/vil hjælpe med en kode, der bare
> tjekker hele formularen for ændringer - uden at skulle definere
> hvert enkelt felt?
Du skal gennemløbe formens elementer og tjekke hver enkelt på
samme måde.
Dog kun de elementer der faktisk kan ændres (ikke fx knapper).
Jeg ville i første omgang ignorere radio-grupper og tjekbokse,
for det er oftest rimeligt at de starter med en indstilling der
er gyldig.
Du kan prøve noget i stil med:
<script>
function checkAllChanged(form, callback) {
var elements = form.elements;
var success = true;
for (var i = 0, n = elements.length; i < n; i++) {
var elem = elements[i];
var ltag = elem.tagName.toLowerCase();
if (((ltag == "input" && elem.type == "text") || ltag == "textarea") &&
(elem.value == elem.defaultValue) ||
(ltag == "select" &&
elem.options[elem.selectedIndex].defaultSelected)) {
success = false;
// Found unchanged element. Call callback so that it can report
// this. End loop if callback returns false.
if (!callback(elem)) return false;
}
}
return success;
}
function reportUnchanged(element) {
alert("Please make a change to the value: " + element.value);
return false; // abort after first change
}
</script>
<form action="" onsubmit="return checkAllChanged(this, reportUnchanged);">
<input name="b" type="text" value="ok">
<select name="a"><option selected="true">A</option><option>B</option></select>
<textarea name="c">Oldenborre</textarea>
<input type="submit" value="try">
</form>
/L
--
Lasse Reichstein Holst Nielsen
DHTML Death Colors: <URL:
http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'