Avatar billede kimlarsen1978 Nybegynder
07. januar 2007 - 12:22 Der er 8 kommentarer og
1 løsning

Validering returnere for tidligt!

Hejsa
Jeg har en validering som skal afvente en værdi som sættes på en anden side, men den returnere true inden værdien er sat???

Kode:

*****************************************

//Start validering
function val(){
var formRef = document.forms['arrangement'];
if (ValArrangement(formRef)){
  alert('3');
  document.arrangement.submit();
}
}

//Validering
function ValArrangement(f) {
alert('0');
newF.submit();

//vent på id tilbage i arrangementBilleder.arrangement_id_PIC
return setTimeout('waitForeArrId_SW()',1000);
}

function waitForeArrId_PIC(){
alert('1');
var arrId = '';
arrId = '' + document.arrangementBilleder.arrangement_id_PIC.value;
arrId = arrId.replace(/\s\s+/g,'');
if (arrId != ''){
  alert('2: '+arrId);
  return true;
}else{
  showTimer = setTimeout('waitForeArrId_SW()',200);
}
}

val();

***********************************************

Problemet er at den ikke venter på id'et inden den tilsyneladende returnerer TRUE, mine alert's kører i denne rækkefølge:

0
3
1
2: XXX


Hvorfor venter den ikke på at waitForeArrId_PIC() returnerer true, og hvordan får jeg den til det? Rækkefølgen skal være:

0
1
2: XXX
3

Er problemet klar nok?
Avatar billede kimlarsen1978 Nybegynder
07. januar 2007 - 12:24 #1
Ups, stavefejl i den ene funk...
*********
function waitForeArrId_PIC() der skal stå function waitForeArrId_SW()
*********
Avatar billede erikjacobsen Ekspert
07. januar 2007 - 12:26 #2
setTimeout venter ikke - den sætter kun det angivne funktionskald i "ventekø", så man kan fortsætte umiddelbart med koden, der kommer efter setTimeout. Jeg kan ikke gennemskue hvad det er du vil opnå?
Avatar billede kimlarsen1978 Nybegynder
07. januar 2007 - 12:35 #3
Den er også lidt svær at forklare...

men jeg prøver:

Formen newF.submit() submittes til en IFrame til en anden server, som returnerer et id nummer, som formen 'arrangementBilleder' skal have inden den kan submittes. Derfor må funktionen ValArrangement(formRef) ikke returnerer true inden den værdi er sat i arrangementBilleder.arrangement_id_PIC.

Kan forøvrigt se at der en en fejl mere i det kode jeg har postet efter alert('3') er det ikke 'arrangement' der skal submittes med 'arrangementBilleder'. Grunden til at 'arrangement' er med som formref til ValArrangement(f), er at der en en masse validering af den inden, det har jeg dog ikke posted her...

Kan du se casen nu?
Avatar billede erikjacobsen Ekspert
07. januar 2007 - 12:39 #4
Du bestemmer selv hvad der sker i din "submit"-frame?  Sæt i svaret fra din submit noget javascript-kode ind, der opdaterer det relevante på din side. Så gør du lidt hen i retning af det samme som alle dem, der bruger rigtig AJAX.

Det med at vente et sekund er ikke holdbart.
Avatar billede kimlarsen1978 Nybegynder
07. januar 2007 - 12:47 #5
Jeg venter ikke bare et sekund, jeg venter til værdien er kommet retur fra den anden server (jeg kalder mig selv til værdien er retur)...

function waitForeArrId_SW(){
alert('1');
var arrId = '';
arrId = '' + document.arrangementBilleder.arrangement_id_PIC.value;
arrId = arrId.replace(/\s\s+/g,'');
if (arrId != ''){
  alert('2: '+arrId);
  return true;
}else{
  showTimer = setTimeout('waitForeArrId_SW()',200);
}
}

"problemet" er at jeg er nødt til at vente til den anden server har givet mig det korrekte id inden jeg kan fortsætte...
Avatar billede erikjacobsen Ekspert
07. januar 2007 - 13:41 #6
Ja, det har jeg set, men jeg var måske upræcis. Kig på Synkron AJAX, "SJAX". Der kan man vente på et svar. Eller brug JavaScript til at fryse din grænseflade til der kommer svar. Eller gør som jeg foreslog før. Jeg tror ikke det du har gang i er holdbart.
Avatar billede kimlarsen1978 Nybegynder
07. januar 2007 - 14:01 #7
Ved ikke hvad AJAX, "SJAX" er :-)

Jeg har lavet lidt om i mine JS funktioner så de står og kalder sig selv til der kommer svar. Jeg har flyttet tjekket på id'et ud af valideringen og ind i en senere kaldt funktion, dermed opnår jeg det jeg gerne vil, nemlig at applikationen venter på at de enkelte værdier er sat.

Vil du have nogle points for dit besvær?
Avatar billede erikjacobsen Ekspert
07. januar 2007 - 14:35 #8
Nej tak.
Avatar billede kimlarsen1978 Nybegynder
07. januar 2007 - 14:38 #9
Så siger jeg tak for din tid :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester