05. april 2005 - 21:51Der er
32 kommentarer og 1 løsning
string fra input felter og checkbox
Hej Eksperter, Nu prøver jeg lige en gang til, det er så vidt jeg har forstået et meget enkelt problem jeg har. Jeg har en kontakt sektion i min fla. som indeholder 4 inputfelter og 10 checkboxe(component)som har hver deres labelnavn, f.eks. "vinduesudskiftning" "trapperenovering" osv..., de skal formodentligt også have de samme instance navne. Det er så meningen at brugeren skal klikke og aktivere de boxe der er relevante for netop ham, og derefter udfylde de 4 input felter (NAVN)(ADRESSE)(TLF)(EMAIL). Og tilsidst trykke SEND Nu skal alle disse data blive til en lang string, som så bliver sendt til et php script, som oversætter og sender indholdet i en mail til mig. Jeg har selv siddet og forsøgt mig frem, og Input felterne virker fint nok, men checkboxene skal jo give mig en value tilbage - true or false?? men det VIL BARE IKKE VIRKE!!!!! Jeg vil meget gerne lige sende en lille fla. fil med indholdet til en af jer, I vil sikkert kunne fixe det på 10 sekunder. Håber der er en der kan hjælpe????
Har du ikke givet dine checkbokse et instancenavn? Og hvordan sender du dine variabler - forhåbentlig med LoadVars? Og du bruger vel også instancenavn på dine tekstfelter?
Hej Barklund, jo jeg bruger LoadVars, og jeg er lidt i tvivl om jeg skal give mine checkboxe samme instance navn, som deres labelnavn eller om de f.eks. skal hedde box1, box2, box3 osv... Men det betyder vel ikke noget. Mine tekstfelter fungere fint nok og har også hver deres instance navn. --------------------------- var feedbackForm:LoadVars = new LoadVars();
//feedbackForm.send("/cgi-bin/formmail.pl", "_blank", "POST"); --------------------------------------------------------------------- Her kan du lige se min kode på sendForm funktionen, jeg ved så ikke hvordan jeg får inkluderet checkboxene her.?? da, der vel også skal være et script som griber boxens value (true or false) Måske ville det være nemmere hvis jeg lige sendte dig fla'en?
Så har du nok lavet en fejl - for sådan gør vi andre og det virker fint. Hvis feedbackForm.box1 giver undefined, så ligger der _ikke_ en komponent med instance navnet box1 i movieclippet feedbackForm - så nemt er det :)
nej, den ligger i movieclippet contactForm, som bliver = feedbackForm. Jeg tracede også : trace (feedbackForm.visitor_name); og den kunne den sagtens finde? mystisk, de ligger jo samme sted...
hej Barklund, Jeg har været det hele igennem flere gange, men jeg ved ikke hvordan (checkbox1.selected = true;) skal bruges, for den skal jo også registrere om den er clicked eller ej? og her fortæller man den det jo bare på forhånd. Jeg har snart brugt 2 uger på dette spørgsmål, vi må da kunne finde en løsning, jeg kan da ikke være den eneste der har behov for at vide dette...det burde jo være ret ligetil, jeg overser bare et eller andet!!!
Fandt lige denne artikel omkring problemer med checkbox components: -------------------------------------------------------------------------------- They have taken well-established objects--UI components--and made arbitrary changes to the way these objects are accessed.
I'm not talking about the change to a new component architecture, the new ActionScript 2.0 implementations, or the the fact that there are new versions of old components. I think that MM had to make a change, and I'm very pleased with the update to ActionScript 2.0 while still maintaining ActionScript 1.0 compatibility. MM should be applauded for making this change and doing it in a responsible way. I'm talking about encapsulation--building objects that hide their implementation from the user, thereby allowing the user to use the objects without worrying that the implementation might change. Macromedia must have skipped that class.
Here is a simple example. The checkbox component is one of the most basic components you can have in an application. They have been around for years in every conceivable environment. If you build a web page using an HTML checkbox in 1996, you can still access the checkbox today. A checkbox is a checkbox is a checkbox. Right? Wrong. There is a Flash MX checkbox and a Flash MX 2004 checkbox. This simple piece of code from Flash MX will fail in Flash MX 2004:
trace(myCheckbox.getLabel());
this will fail as well:
trace(myCheckbox.getValue());
Why? Is it related to the new component architecture? No. Is it related to the switch to ActionScript 2.0? No. It is related purely and simply to bad planning and poor communication. Macromedia could have implemented a checkbox and allowed the user to access getLabel() and getValue() that returned the expected result. Simply put, there is no reason why a checkbox built in early 2003 should not work the same as a checkbox built in late 2003. Was the old syntax deprecated? No--it was just thrown away and a new syntax brought in.
Som beskriver at V1 tilgangen ikke længere virker i V2-komponenterne. Og ja, det er kendt, at alle de indbyggede komponenter overhovedet ikke tilgås på samme måde i V1 og V2.
Og du skal jo bare skrive som jeg skrev - altså læse .selected-egenskaben fra dine komponenter - som returnerer true eller false alt efter om den er valgt eller ej. Jeg kan ikke se problemet længere?
Du må undskylde, men den hopper min logik ikke på, jeg kan simpelthen ikke begribe det???? feedbackForm.box1 = contactForm.box1.selected; den linie du skriver her, sætter jo bare box1 til at være selected med det samme - altså true!!! Der skal jo først registreres om den er true, når man trykker på SEND.??
Hvad snakker du om? Der er ingen der sætter selected til noget som helst? Du skal da overføre værdien af selected-egenskaben til dit loadvars objekt. Og da dit loadvars objekt hedder feedbackForm, så gør vi det dertil. Jeg kan godt skrive det ind i dit script, men det troede jeg selv, du kunne:
sendForm(); //trace(feedbackForm.box1); trace("Jeg kalder lige funktionen getValue ("+typeof contactForm.box1.getValue+") på "+ contactForm.box1+" og får: "+ contactForm.box1.getValue())
trace (feedbackForm.visitor_name);
gotoAndStop ("correct");
}
}
Så er der 8 checkboxe i din loadvars. Men der er ingen der _sætter_ selected, kun nogle der _læser_ den.
Jeg kan simpelthen ikke gennemskue, hvordan en egenskab kan være svær at forstå? Det er jo ligesom man kan sætte og læse movieclip._x eller tekstfelt.text...
Dvs, når man klikker på box 6 f.eks. og aktivere den, så bliver den true, og bliver inkluderet som f.eks. "box 6 = true" i strengen sammen med indholdet fra input felterne?
jeg har ikke noget cgi/php script endnu, så jeg kan ikke rigtigt teste det, eller hvad? jeg kan måske trace loadvars, eller feedbackForm og se alt hvad der bliver sendt i output eller hvordan??
Jeg tror dælme det virker, det er først nu det går op for mig hvad du mener med egenskaben select, jeg havde fastlåst min logik på at select var det samme som true. Jeg testede det med trace(feedbackForm); Og i Output kunne jeg se hele strengen,som så skal sendes til cgi scriptet. Jeg går ud fra at man så i selve cgi eller php scriptet oversætter strengen ved hjælp af kode f.eks. : box1 = trapperenovering, box2 = vinduesudskiftning osv...
Barklund, du må godt nok ha' talt til 10 et par gange under denne tråd, jeg kan sagtens følge din frustration over at noget som virker så logisk og enkelt for dig, ikke ville bide sig fast i min analfabetiske scripterhjerne :--) Jeg kan ikke forklare det anderledes end, at det føles som at skrive speciale i tysk indenrigs politik, uden at have lært gramatikken endnu. Hvor kan jeg købe din AS-bog? Jeg bliver nødt til at få en grundlæggende forståelse for sproget, hvis det kan lade sig gøre. Jeg håber, at du gennem bogen har tænkt over, at de fleste designere har en anden logik og en indlæringsproces, som er meget visuelt orienteret. :ø)
Kom med et svar, så du kan få dine velfortjente point :)
Du kan garantere lære noget - det er lige præcis den slags nedskæring til det basale, "det er bare en boolean egenskab, der findes jo kun det"-agtig introduktion, som bogen giver.
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.