Avatar billede kief Nybegynder
30. november 2009 - 12:59 Der er 5 kommentarer og
1 løsning

AS2: Arrays - håndtering af data

[se kode i bunden]

Hej alle

Jeg har et spørgsmål. Jeg er igang med at lave en beregner og den bliver lavet ud fra data som er lagt i Array.

Se eksempel her: https://www2.pension.dk/test/beregn/beregn.html

Mit problem er at jeg gerne vil have den til at kunne smage på dataerne og derved styre hvad den skal outputte. Lige nu virker den hvis jeg indtaster eksempelvis "2100" (eller 2200, 2300) i første boks og så et vilkårligt tal i anden boks.

Jeg vil gerne have den til så at smidde en fejlmeddelelse ud hvis man skriver et tal som ikke findes i Arrayet. Altså 2099 = "Fejl i kode".

På forhånd tak!

Casper

Mit array:

var myArray = new Array();
myArray[0] = "Indtast gyldig kode";
myArray[2100] = "17.50";
myArray[2200] = "14.25";
myArray[2300] = "11.26";
myNumber = okkode.text;
myNumber2 = okkode2.text; 

kode på andet tekstfelt:

on (change) {
with (_parent) {

resultat.text = Math.round (Number (antal.text) * Number (kort.text)) + ",00 kr";

hidden.text = Math.round (Number (antal.text) * Number (kort.text));

sum = Math.round (Number(hidden.text)) + ",00 kr.";

}
}
Avatar billede hmanback Nybegynder
30. november 2009 - 15:54 #1
De tal der valueres i felterne er de altid fire cifre?
Hvis ikke, hvad vil der så ske hvis der indtastes 0 og denne værdi checkes op mod dit array? (måske et dumt spørgsmål)

Vil det være en løsning at valuere feltet(erne) når feltet mister focus i stedet. Det er vel nemmere end at tjekke løbende input...

onKillFocus = function(newFocus: Object) {


}
Avatar billede kief Nybegynder
03. december 2009 - 11:39 #2
Hej hmanback

Tak for dit svar!

Jeg regner med at sætte en begræsning på felterne således at de er numeriske men antallet af cifre vil formentlig altid være 5 cifret.

Tanken er at den skal smide en fejl ud hvis den ikke kan finde "tallet" i Arrayet.

Du beskriver en killfunktion. Hvor i filen skal den ligge for at fungere ordentligt? Hvad vil der ske med en killfunktion, hvis man indtaster data som ikke eksisterer? (i arrayet?)

Kan godt være det bare er mig der lige kender den løsning :)
Avatar billede hmanback Nybegynder
03. december 2009 - 16:56 #3
Her er et simpelt eksempel med udgangspunkt i den kode du har lavet.

I en ny flash fil opret tre layers.
layer1: her ligger din ActionScript
layer2: her ligger en textfield med navn "input_text1"
layer3: her ligger en textfield med navn "input_text2"

Textfield på layer3 er blot for at du kan klikke på det så onKillFocus kaldes for input_text1.

AS:
var myArray:Array = new Array();
myArray[0] = "Indtast gyldig kode";
myArray[2100] = "17.50";
myArray[2200] = "14.25";
myArray[2300] = "11.26";

//text field settings
input_text1.restrict = "0-9";
input_text1.maxChars = 5;

input_text1.onKillFocus = function() {
validateTextField(this);
}

//validate function
function validateTextField(field:TextField){
    if(myArray[Number(field.text)]){
        trace("ok");
    } else  {
        trace("error");
        Selection.setFocus(field);
    }
}

//et problem er så hvis der indtastes 0, så et check på antal karakterer skal laves
Avatar billede kief Nybegynder
08. december 2009 - 13:11 #4
Fantastisk - det virker perfekt!

Har blot ét spørgsmål endnu, er det muligt at få onKill kørende flere gange?

Nu har jeg:


okkode.onKillFocus = function() {validateTextField(this);}
function validateTextField(field:TextField){ 
if(myArray[Number(field.text)])
{trace(output.text = "");} else  {trace( output.text = "kode forkert"); }}
Selection.setFocus(field);   

Hvor <b>output.text</b> vises som dynamisk felt.

Hvis jeg indsætter samme stump kode, hvor jeg ændrer første linie til <b>okkode2.onKillFocus bla bla..</b> så vil den ikke outputte teksten. (kan se den blot kører første function for næste felt)
Avatar billede kief Nybegynder
08. december 2009 - 13:18 #5
Yeah... fik rettet det, havde bare ikke omdøbt funktionen :) .. tak for hjælpen, nu tror jeg snart jeg er i mål.. Din hjælp har været uvurderlig!

Kan være jeg lige skriver herinde hvis jeg får brug for en anelse mere hjælp, men tror jeg er klar nu :)
Avatar billede hmanback Nybegynder
08. december 2009 - 16:58 #6
Du skriver bare, tid til at lukke tråden?
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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