Validering af formfelter
Jeg er kørt en smule fast her.Min forklaring er måske nok en smule snørklet. Jeg vil prøve at gøre det så forståligt som muligt,
men hvis i ikke fatter en skide - så råb endelig op
Mit problem er at jeg vil validere en form for tomme felter i Javascript funktion.
Min funktion løber alle formfelter igennem for at lede efter tomme felter.
Jeg har dog mulighed for at fravælge felter fra som jeg ikke ønsker at sortere på.
Dette gør jeg ved at angive et id i det enkelte formular felt
f.eks.: id="[s:-+]" betyder at formfeltet skal valideres.
For at gøre min formfelt validering så fleksibel som mulig har jeg ligeledes tilføjet
et andet id. Dette kunne f.eks. være: [i:1]
Dette id identificere formfeltet. Hvis der er to formfelter med de samme id'er er det kun
nødvendigt at udfylde den ene,
i Nedenstående eksempel er det kun nødvendigt at afkrydse den ene checkbox:
<input type="checkbox" name="checkme1" value="1" id="[s:-+][i:1]">
<input type="checkbox" name="checkme2" value="1" id="[s:-+][i:1]">
Et eksempel hvor begge checkboxe skulle være afkrydset kunne være:
<input type="checkbox" name="checkme1" value="1" id="[s:-+][i:1]">
<input type="checkbox" name="checkme2" value="1" id="[s:-+][i:2]">
Bemærk at de to id'ere [i:1] og [id:2] er forksellige og derfor valideres der på
dem begge.
Mit problem er følgende:
Jeg kan godt validere på to eler tre formfelter der har det samme id.
Men hvis id'erne er forskellige fucker det.
I følgende eksempel er der 3 checkboxe der alle skal være afkrydset.
Hvis jeg afkrydser den første og trykker på submit sendes formularen uden at der
valideres på de 2 andre formfelter.
Dette skyldes at når jeg løber min løkke igennem i min funktion angives en variabel "oIdent"
oIdent er lig med formfeltets id.
I min løkke laver jeg så endnu en løkke der løber alle formfelterne igennem en gang til for
at se om der er andre id'er der matcher oIdent. Hvis den finder et id (og den gør den - den finder nemlig sit eget id) der matcher og formfeltet
er afkrydset lægges der 1 til variablen "cCheckbox"
Hvis jeg derimod afkrydser checkbox 2 eller 3 fungere det fint.
Nederst har jeg pastet min kode.
Jeg håber virkelig der nogle der kan hjælpe mig - og igen spørg hvis der er noget i ikke forstår.
På forhånd tak. :-)
<script>
for (var i=0; i < oForm.length; i++) {
oElement = oForm.elements[i];
oElementID = oElement.id;
var oIdent = objectType(oElementID, '[i:');
if (oElement.type == 'checkbox') {
if (oIdent != '') {
for (var j=0; j < oForm.length; j++) {
if (objectType(oForm.elements[j].id, '[s:') == '-+') {
//Det er her mit problem opstår :-(
//Når i = 0 har min løkke fat i den første checkbox.
//1. Jeg ser så først om denne er afkrydeset.
//2. Dernæst ser jeg efter om dets id = oIdent og det vil den automatisk
//være fordi i = 0
//Hvis 1 og 2 er sand vil den automatisk lægge 1 til cCheckbox
if ((oForm.elements[j].checked == true) && (objectType(oForm.elements[j].id, '[i:') == oIdent)) {
cCheckbox++
}
}
}
}
}
if (cCheckbox == 0) {
if (oElement.checked == false) {
alert('Et eller andet intelligent');
return false;
}
}
}
function objectType(oElementID, oType) {
var returnType = '';
if (oElementID.indexOf(oType) > -1) {
returnType = oElementID.substring(oElementID.indexOf(oType)+oType.length,oElementID.length);
returnType = returnType.substring(0,returnType.indexOf("]"));
}
return returnType;
}
</script>
<form name="oForm" action="test.html" method="post" onsubmit="return checkForm(oForm);">
<input type="checkbox" name="checkme1" value="1" id="[s:-+][i:1]"><br>
<input type="checkbox" name="checkme2" value="1" id="[s:-+][i:2]"><br>
<input type="checkbox" name="checkme3" value="1" id="[s:-+][i:3]"><br>
<input type="submit" value="Send">
</form>
