[racket] formlets with radio button & checkbox example?

From: keydana at gmx.de (keydana at gmx.de)
Date: Tue Dec 27 16:20:41 EST 2011

Jay,

many thanks for the answer, that already helps a lot! 

Just one thing - the generated html does not have a "value" attribute, but instead uses a different "name" for every radio button - how can I get the radio buttons identified as a group by the browser, such that only one button can be selected?

In fact, looking at the generated html as well as the input given to formlet-process, I do not see where the "value" passed to the radio constructor is used?

Thanks again,
Sigrid


 


Am 26.12.2011 um 22:28 schrieb Jay McCarthy:

> Here is a short example:
> 
> #lang racket
> (require racket/promise
>         web-server/http/request-structs
>         web-server/formlets
>         net/url)
> 
> (define some-formlet
>  (formlet
>   (div "Checked Radio"
>        ,{(default #"default" (radio #"checked-radio" #t)) . => . cr}
>        "Not-Checked Radio"
>        ,{(default #"default" (radio #"unchecked-radio" #f)) . => . ncr}
>        "Checked Checkbox"
>        ,{(default #"default" (checkbox #"checked-checkbox" #t)) . => . cc}
>        "Not-Checked Checkbox"
>        ,{(default #"default" (checkbox #"uncheck-checkbox" #f)) . => . ncc})
>   (list cr ncr cc ncc)))
> 
> (formlet-display some-formlet)
> 
> (define (show-example bs)
>  (formlet-process some-formlet
>                   (request #"GET"
>                            (string->url "http://localhost")
>                            empty
>                            (delay bs)
>                            #f
>                            "host"
>                            8943
>                            "client")))
> 
> (show-example empty)
> (show-example (list (binding:form #"input_0" #"true")))
> (show-example (list (binding:form #"input_0" #"true")
>                    (binding:form #"input_1" #"false")))
> (show-example (list (binding:form #"input_0" #"true")
>                    (binding:form #"input_1" #"false")
>                    (binding:form #"input_2" #"true")
>                    (binding:form #"input_3" #"false")))
> 
> It would be good to create a higher-level formlet that rendered to a
> checkbox or radio button that would return a boolean or a selection,
> like the select formlets do.
> 
> Jay
> 
> On Mon, Dec 26, 2011 at 12:02 PM, keydana at gmx.de <keydana at gmx.de> wrote:
>> Hi,
>> 
>> it's me again, and whereas I don't know how dumb I am I sure might have been a bit lazy :-;
>> 
>> Unfortunately, even after taking a bit more time, I don't know how it works. Lastly, I've been trying this, which displayed fine:
>> 
>> (define f-choose-db
>>  (let ((o (radio #"orcl" #t))
>>        (r (radio #"rndba" #f)))
>>    (formlet
>>     (div "orcl" ,(o . => . orcl)
>>          "rndba" ,(r . => . rndba))
>>     (values orcl rndba))))
>> 
>> But when I use formlet-process to extract the result (just clicking submit, leaving the checked box checked), I get the values #<binding:form> and #f... (and see input_0=on in the browser).
>> 
>> Also I was trying to add a binding name to the radio function calls themselves, e.g. (radio #"xx" #f . => . myname), but this throws a syntax error.
>> 
>> Could anyone offer a hint what I'm doing wrong here?
>> 
>> (BTW this list has the most helpful people & inspiring content of all mailing lists I know of , and I'm not writing this in order to get a nice answer :-) )
>> 
>> Ciao
>> Sigrid
>> 
>> 
>> ____________________
>>  Racket Users list:
>>  http://lists.racket-lang.org/users
> 
> 
> 
> --
> Jay McCarthy <jay at cs.byu.edu>
> Assistant Professor / Brigham Young University
> http://faculty.cs.byu.edu/~jay
> 
> "The glory of God is Intelligence" - D&C 93




Posted on the users mailing list.