[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