07. januar 2007 - 12:22Der 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:
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
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å?
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...
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.
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.
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.
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.