PDA

Volledige versie bekijken : form realtime valideren


phrz
%Europe/Berlin %526 %2005, 13:38
Lieve mensen,

Ik zit met een klein probleempje ... ik ben een formuliertje aan het maken die gelijk valideerd bij het focussen op een ander veld. Nu werkt dit allemaal prima, alleen wanneer ik het wil verzenden wil ik dat al de required-velden goed zijn ingevuld. Dit check ik met de blnIsValid boolean, maar het probleem is nu, wanneer je nog je focus op het veld hebt staan, ziet flash het als onveranderd omdat die boolean pas geset wordt bij de killfocus ... iemand enig idee hoe ik dit kan oplossen????

HELP :S


var arrFields:Array = new Array(frmBedrijf, frmStraat, frmPostcode, frmPlaats, frmNaam, frmEmail, frmTelefoon, frmOpmerking);
var arrRequired:Array = new Array(frmBedrijf, frmNaam, frmEmail);

var clrFocus:String = "0xCCCCCC";
var clrBlur:String = "0xFFFFFF";
var clrError:String = "0xFF0000";

var objCurrentFocus:Object;
var objOldFocus:Object;


// fc: stands for field count //
for (fc = 0; fc < arrFields.length; fc ++){
arrFields[fc].onSetFocus = function(){
this.backgroundColor = clrFocus;

objCurrentFocus = this;
validate(objOldFocus);
}
arrFields[fc].onKillFocus = function(){
this.backgroundColor = clrBlur;

objOldFocus = this;
}

arrFields[fc].borderColor = 0x333333;
arrFields[fc].text = "";
arrFields[fc].tabIndex = fc;
}

// select first field //
Selection.setFocus(arrFields[0]);

function validate(objOldFocus){
for (fc = 0; fc < arrRequired.length; fc ++){
if(objOldFocus == arrRequired[fc]){
if(objOldFocus.length >= 2){
if(objOldFocus == frmEmail){
objOldFocus.blnIsValid= validateEmail(objOldFocus.text);
}else{
objOldFocus.blnIsValid = true;
}
}else{
objOldFocus.blnIsValid = false;
}

if(objOldFocus.blnIsValid == true){
objOldFocus.backgroundColor = clrBlur;
}else{
objOldFocus.backgroundColor = clrError;
}
}
}
}

validateEmail=function(strEmail:String):Boolean{
var tokens:Array;
var index:Number=0;

index=strEmail.indexOf("@");
if(index<0 || (index+1)>(strEmail.length-1-1-1))return false;

index=strEmail.indexOf("@",index+1);
if(index>=0)return false;

tokens=strEmail.split("@",2);
if(tokens.length!=2){
return false;
}

tokens[1]=split(".",2);
if(tokens.length!=2){
return false;
}else{
return true;
}
}

btnSubmit.onRelease = function(){
var intIsTrue = 0;

for (fc = 0; fc < arrRequired.length; fc ++){
if(arrRequired[fc].blnIsValid == true){
intIsTrue ++;
}else{
intIsTrue -1;
}
}

if(intIsTrue == arrRequired.length){
trace("verstuur");
}
}

mateo)
%Europe/Berlin %541 %2005, 13:59
misschien met:

Selection.setFocus(this);

in die btnSubmit.onRelease functie

Roenes
%Europe/Berlin %627 %2005, 16:03
Met de onChanged handler kun je registreren als een textveld van waarde veranderd. Dit kun je dus gebruiken om iedere wijziging van je tekstveld te registreren. Deze wordt echter niet aangeroepen als je alleen de focus geeft aan het tekstveld en niets aan de waarde veranderd.

Maar wellicht heb je er iets aan :)