[Seaside] How do I use JQuery with Javascript variable

Francisco Martins chicoary at gmail.com
Mon Jan 30 18:19:56 UTC 2012


Thanks Johan for your response.

I saw my omission of the code snippet "addLoadscript html document:"
before your reply. I put also indicated halts but they were not
reached during the execution.

Another question I have is this: the original code runs entirely in
Javascript on the client. There is no way to do the same in Seaside
with JQuery?

>
> Francisco,
>
> Wait... now I see that you are just generating the script but you are not attaching it anywhere. The script is therefore never rendered to the client side.
> You original code snippet contained:
>
> html document addLoadscript: <script>
>
> which is correct, but you can also attach the script to the testButton like this:
>
> html button
>        script: <script> ;
>        id: ...
>
> >From there on, I think it should work but I'm also just writing this off the top of my head.
>
> With <script> being:
>
>        (html jQuery: #testButton)
>                onClick: (html jQuery ajax
>                                callback: [:val | checkedValue := val]
>                                value: (JSStream on: '$(''[name="someRadioGroup"]:radio:checked").val()');
>
>                                onComplete: ((html jQuery: #result) load
>                                                html: [:renderer | renderer html: 'The radio element with value
> <tt>' , checkedValue , '</tt> is checked.'])).
>
> best
> Johan
>
> On 30 Jan 2012, at 02:09, Francisco Martins wrote:
>
>> Thanks Johan for your answer.
>>
>> See my code below:
>>
>> renderContentOn: html
>>       | checkedValue |
>>       (html jQuery: #testButton)
>>               onClick: (html jQuery ajax
>>                               callback: [:val | checkedValue := val]
>>                               value: (JSStream on: '$(''[name="someRadioGroup"]:radio:checked").val()');
>>
>>                               onComplete: ((html jQuery: #result) load
>>                                               html: [:renderer | renderer html: 'The radio element with value
>> <tt>' , checkedValue , '</tt> is checked.'])).
>>       html
>>               form: [html
>>                               div: [html label for: #radioYes;
>>                                                with: 'What is your answer?'.
>>                                       html
>>                                               radioGroup: [:group |
>>                                                       html radioButton id: #radioYes;
>>                                                                group: group;
>>                                                                name: #someRadioGroup;
>>                                                                value: #yes;
>>                                                                selected: true;
>>                                                                with: 'Yes'.
>>                                                       html radioButton id: #radioNo;
>>                                                                group: group;
>>                                                                name: #someRadioGroup;
>>                                                                value: #no;
>>                                                                with: 'No'.
>>                                                       html radioButton id: #radioMaybe;
>>                                                                group: group;
>>                                                                name: #someRadioGroup;
>>                                                                value: #maybe;
>>                                                                with: 'Maybe'.
>>                                                       html radioButton id: #radioConfused;
>>                                                                group: group;
>>                                                                name: #someRadioGroup;
>>                                                                value: #confused;
>>                                                                with: 'I dunno']].
>>                       html
>>                               div: [html button type: #button;
>>                                                id: #testButton;
>>                                                class: #green90x24;
>>                                                with: 'Which?'].
>>                       html div id: #result]
>>
>> Unfortunately the code did not work. I did something wrong?
>>
>>> Francisco,
>>>
>>> If you want to include a callback to the server on click, this is how I would do it:
>>>
>>> (html jQuery: #testButton) onClick: (
>>>        (html jQuery ajax
>>>                callback: [:val |  checkedValue := val]
>>>                value: (JSStream on: '$(''[name=''someRadioGroup'']:radio:checked'').val()');
>>>                onComplete: (html jQuery: #result) load html: [:renderer| renderer html: 'The radio element with value <tt>' , checkedValue, '</tt> is checked.'])
>>>
>>> This effectively makes two callbacks: one to retrieve the value and one to render the html.
>>>
>>> Johan
>>
>> --
>> Sds.,
>>

-- 
Sds.,

Francisco Ary Martins
http://chicoary.wordpress.com
----
"A filosofia não é senão uma poesia sofisticada."
Montaigne


More information about the seaside mailing list