Avatar billede reptil Nybegynder
05. april 2005 - 21:51 Der 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????
Avatar billede barklund Nybegynder
05. april 2005 - 21:56 #1
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?
Avatar billede reptil Nybegynder
05. april 2005 - 22:12 #2
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();

function sendForm() {
    feedbackForm.email_to = "info@web.dk";
    feedbackForm.visitor_name = contactForm.userNavn.text;
    feedbackForm.visitor_adresse = contactForm.userAdresse.text;
    feedbackForm.visitor_tlf = contactForm.userTlf.text;
    feedbackForm.visitor_email = contactForm.userEmail.text;
    //feedbackForm.box1 = contactForm.box1 =
   
    //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?
Avatar billede barklund Nybegynder
05. april 2005 - 22:21 #3
Du bestemmer da selv, hvad du vil kalde dem - bare du kan finde dem igen. Har du en box1, så kan du inkludere den i din loadvars.

Et hurtigt kig i manualen afslører funktionen:

FCheckBox.getValue - Returns true if the check box is selected, false if it is not selected.

Så den bruger vi:

feedbackForm.box1 = contactForm.box1.getValue();

Og voila, så er der en true/false ting i din loadvars :)

--
Morten Barklund
Avatar billede reptil Nybegynder
05. april 2005 - 22:34 #4
Det har jeg lige prøvet, og prøvede at trace den når jeg klikker på SEND:
trace(feedbackForm.box1);

Så skriver den bare undefined ?
Avatar billede barklund Nybegynder
05. april 2005 - 22:38 #5
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 :)
Avatar billede reptil Nybegynder
05. april 2005 - 22:43 #6
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...
Avatar billede barklund Nybegynder
05. april 2005 - 22:46 #7
Så hvis du trace'r contactForm.box1 får du, hvad?
Avatar billede reptil Nybegynder
05. april 2005 - 22:54 #8
så får jeg bare "contactForm.box1" i output feltet.
Avatar billede reptil Nybegynder
05. april 2005 - 22:54 #9
Uanset om den er valgt eller ej
Avatar billede reptil Nybegynder
05. april 2005 - 22:55 #10
Den skulle jo gerne komme med "box1 = true"
Avatar billede barklund Nybegynder
05. april 2005 - 22:57 #11
Na, den skriver vil ikke _kun_ "contactForm.box1" - den skriver vel noget med _level0 forrest og den slags?

Men så prøv at skrive:

trace("Jeg kalder lige funktionen getValue ("+typeof contactForm.box1.getValue+") på "+ contactForm.box1+" og får: "+ contactForm.box1.getValue())

Og sig, hvad den så tracer :)

--
Morten Barklund
Avatar billede reptil Nybegynder
05. april 2005 - 23:02 #12
Dette her :
Jeg kalder lige funktionen getValue (undefined) på _level0.ejendomsudvikling.contactForm.box1 og får: undefined
Avatar billede reptil Nybegynder
05. april 2005 - 23:11 #13
Du får lige hele scriptet her :
//-------------------------<sendform>------------------

var feedbackForm:LoadVars = new LoadVars();

function sendForm() {
    feedbackForm.email_to = "info@web.dk";
    feedbackForm.visitor_name = contactForm.userNavn.text;
    feedbackForm.visitor_adresse = contactForm.userAdresse.text;
    feedbackForm.visitor_tlf = contactForm.userTlf.text;
    feedbackForm.visitor_email = contactForm.userEmail.text;
    feedbackForm.box1 = contactForm.box1.getValue();
   
    //feedbackForm.box1 = contactForm.box1 =
    //feedbackForm.send("/cgi-bin/formmail.pl", "_blank", "POST");
}
//-------------------------</sendform>------------------\\

//-----------------------------<submit button AS>---------------------
this.contactForm.submitBtn.btnLabel.autosize = "center";
this.contactForm.submitBtn.btnLabel.text = "SEND";

// onRollOver
this.contactForm.submitBtn.onRollOver = function(){
    contactForm.submitBtn.gotoAndPlay("over");
}
// onRollOut
this.contactForm.submitBtn.onRollOut = function(){
    contactForm.submitBtn.gotoAndPlay("out");
    }
// onRelease
this.contactForm.submitBtn.onRelease = function(){
    if (contactForm.userNavn.text == "" || contactForm.userAdresse.text == "" ||
        contactForm.userTlf.text == "" || contactForm.userEmail.text == ""){
            gotoAndStop("error");
    } else {
       
        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");
       
    }
       
}
Avatar billede barklund Nybegynder
06. april 2005 - 09:52 #14
Hm, bruger du Flash MX 2004 og dermed V2-komponenter eller Flash MX og dermed V1-komponenter?
Avatar billede reptil Nybegynder
06. april 2005 - 11:29 #15
jeg bruger flash MX 2004 PRO, så nej, jeg bruger ikke V1 komponenter
Avatar billede reptil Nybegynder
06. april 2005 - 11:39 #16
Har du ikke en mailadresse, så kan du lige få fla'en, den er super nem at overskue, det vil gå meget hurtigere...Please???
Avatar billede barklund Nybegynder
06. april 2005 - 11:46 #17
Hm, getValue() var vist også til V1-versionen. Har du kigget i din manual under Checkbox komponenten?

Der står ganske tydeligt:

CheckBox.selected
Availability
Flash Player 6 (6.0 79.0).

Edition
Flash MX 2004.

Usage
checkBoxInstance.selected

Description
Property; a Boolean value that selects (true) or deselects (false) the check box.

Example
The following example selects the instance checkbox1:

checkbox1.selected = true;

Måske det kan bruges :)

getValue fandt jeg via livedocs - og det var så til Flash MX og V1-komponenten.

--
Morten Barklund
Avatar billede reptil Nybegynder
06. april 2005 - 12:26 #18
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!!!
Avatar billede barklund Nybegynder
06. april 2005 - 12:33 #19
Du kan jo også læse varioablen - du kan ikke kun sætte den :/

feedbackForm.box1 = contactForm.box1.selected;

Det er da ligetil?
Avatar billede reptil Nybegynder
06. april 2005 - 12:47 #20
Hvordan læser jeg den så, nu hvor den er sat?
Avatar billede barklund Nybegynder
06. april 2005 - 13:12 #21
Som jeg skrev?
Avatar billede reptil Nybegynder
06. april 2005 - 13:20 #22
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.

-----
Avatar billede barklund Nybegynder
06. april 2005 - 13:36 #23
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?
Avatar billede reptil Nybegynder
06. april 2005 - 14:15 #24
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.??
Avatar billede barklund Nybegynder
06. april 2005 - 15:10 #25
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>------------------

var feedbackForm:LoadVars = new LoadVars();

function sendForm() {
    feedbackForm.email_to = "info@web.dk";
    feedbackForm.visitor_name = contactForm.userNavn.text;
    feedbackForm.visitor_adresse = contactForm.userAdresse.text;
    feedbackForm.visitor_tlf = contactForm.userTlf.text;
    feedbackForm.visitor_email = contactForm.userEmail.text;
    feedbackForm.box1 = contactForm.box1.selected;
    feedbackForm.box2 = contactForm.box2.selected;
    feedbackForm.box3 = contactForm.box3.selected;
    feedbackForm.box4 = contactForm.box4.selected;
    feedbackForm.box5 = contactForm.box5.selected;
    feedbackForm.box6 = contactForm.box6.selected;
    feedbackForm.box7 = contactForm.box7.selected;
    feedbackForm.box8 = contactForm.box8.selected;
 
    //feedbackForm.box1 = contactForm.box1 =
    //feedbackForm.send("/cgi-bin/formmail.pl", "_blank", "POST");
}
//-------------------------</sendform>------------------\\

//-----------------------------<submit button AS>---------------------
this.contactForm.submitBtn.btnLabel.autosize = "center";
this.contactForm.submitBtn.btnLabel.text = "SEND";

// onRollOver
this.contactForm.submitBtn.onRollOver = function(){
    contactForm.submitBtn.gotoAndPlay("over");
}
// onRollOut
this.contactForm.submitBtn.onRollOut = function(){
    contactForm.submitBtn.gotoAndPlay("out");
    }
// onRelease
this.contactForm.submitBtn.onRelease = function(){
    if (contactForm.userNavn.text == "" || contactForm.userAdresse.text == "" ||
        contactForm.userTlf.text == "" || contactForm.userEmail.text == ""){
            gotoAndStop("error");
    } else {
     
        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...

--
Morten Barklund
Avatar billede reptil Nybegynder
06. april 2005 - 16:20 #26
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?
Avatar billede barklund Nybegynder
06. april 2005 - 16:59 #27
ja? har du prøvet?
Avatar billede barklund Nybegynder
06. april 2005 - 17:00 #28
Det vil jo så være:

box6=true

Og den vil blive sendt som en POST variabel, men ellers ja :)

--
Morten Barklund
Avatar billede reptil Nybegynder
06. april 2005 - 19:57 #29
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??
Avatar billede barklund Nybegynder
06. april 2005 - 20:05 #30
Du kan da bare trace variablens værdi:

feedbackForm.box1 = contactForm.box1.selected;
trace("variablen er nu: "+feedbackForm.box1);

Mere er det vel ikke i det?

--
Morten Barklund
Avatar billede reptil Nybegynder
06. april 2005 - 20:31 #31
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 :)
Avatar billede barklund Nybegynder
06. april 2005 - 21:37 #32
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.

Du kan købe den fra globe's hjemmeside: http://globe.dk/?action=detail&vare=FG227-7

Og ja, den er skrevet, så også grafikerne kan være med ;)

Hvis du ikke synes, at de skal hedde box1, så kald dem noget andet:

feedbackForm.trapperenovering = contactForm.box1.selected;

Det må du jo 100% selv om :)

--
Morten Barklund
Avatar billede barklund Nybegynder
06. april 2005 - 22:26 #33
Tark for points :)
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