[Seaside] checkbox callbacks

Lukas Renggli renggli at gmail.com
Mon Sep 26 11:41:37 UTC 2011


On 26 September 2011 13:39, Lukas Renggli <renggli at gmail.com> wrote:
> It is probably the easiest if you just re-render that part of the
> page. I suggest a refactorings along the following lines:
>
>> renderContentOn: html
>
> | id |
> id := html nextId.
> html div id: id; with: [
>
>>        html form: [
>>                html checkbox
>>                        onChange: (html jQuery ajax serializeThisWithHidden);
>
> You do replace the above line with:
>
>    onChange: ((html jQuery id: id) load serializeThisWithHidden;
> html: [ :r | self renderContentOn: r ])

Sorry, this is a bit buggy. You don't want to re-render the div here,
just what is inside. So better extract the inner part to a separate
method.

>
>>                        value: self isChecked;
>>                        callback: [:value | self check: value. self check2: value].
>>                html text: 'Check me'.
>>                html checkbox
>>                        onChange: (html jQuery ajax serializeThisWithHidden);
>
> And do the same here. Maybe extract it to a separate method so that
> you can reuse it.
>
>>                        value: self isChecked2;
>>                        callback: [:value | self check2: value. self check: value not].
>>                html text: 'Check me 2'.
>>        ]
>>
>> So what's the best strategy to update the checkboxes reflecting the
>> internal state?
>
> ] "close the div here"
>
> Cheers,
> Lukas
>
>>
>> Alex
>>
>> 2011/9/26 Alexander Lazarević <laza at blobworks.com>:
>>> Robert and Lukas,
>>>
>>> I guess I still have some misconceptions when it comes to JS
>>> callbacks, but thanks for helping me along. I had the idea that the
>>> entire form gets serialized, but only the callbacks of changed
>>> elements would trigger a onChange: event and then trigger the
>>> callback.
>>>
>>> Alex
>>>
>>> 2011/9/24 Lukas Renggli <renggli at gmail.com>:
>>>> Yes, you serialize the form which means it involves both checkboxes. On your
>>>> scenario both callbacks should be triggered: the checked one with true, the
>>>> unchecked with false.
>>>>
>>>> Btw, you do not need the IDs. For the AJAX just use (html jQuery ajax
>>>> serializeForm). You don't want to load anything into the checkbox.
>>>>
>>>> Lukas
>>>>
>>>> On Saturday, 24 September 2011, Alexander Lazarević <laza at blobworks.com>
>>>> wrote:
>>>>> Hi!
>>>>>
>>>>> I'm using something like the following in my code:
>>>>>
>>>>> renderContentOn: html
>>>>>        | id |
>>>>>        html form: [
>>>>>                id := html nextId.
>>>>>                html checkbox
>>>>>                        id: id;
>>>>>                        onChange: (html jQuery id: id) load serializeForm;
>>>>>                        value: self isChecked;
>>>>>                        callback: [:value | value inspect].
>>>>>                html text: 'Check me'.
>>>>>                id := html nextId.
>>>>>                html checkbox
>>>>>                        id: id;
>>>>>                        onChange: (html jQuery id: id) load serializeForm;
>>>>>                        value: self isChecked2;
>>>>>                        callback: [:value | value inspect].
>>>>>                html text: 'Check me 2'.
>>>>>        ]
>>>>>
>>>>> I'm surprised to see that both callbacks get triggered even if I only
>>>>> check one checkbox. Is this on purpose and expected? According to
>>>>> Metacello I'm using Seaside 3.0.6
>>>>>
>>>>> Alex
>>>>> _______________________________________________
>>>>> seaside mailing list
>>>>> seaside at lists.squeakfoundation.org
>>>>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>>>>>
>>>>
>>>> --
>>>> Lukas Renggli
>>>> www.lukas-renggli.ch
>>>>
>>>> _______________________________________________
>>>> seaside mailing list
>>>> seaside at lists.squeakfoundation.org
>>>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>>>>
>>>>
>>>
>> _______________________________________________
>> seaside mailing list
>> seaside at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>>
>
>
>
> --
> Lukas Renggli
> www.lukas-renggli.ch
>



-- 
Lukas Renggli
www.lukas-renggli.ch


More information about the seaside mailing list