[Seaside] Jquery select then hide

Johan Brichau johan at inceptive.be
Tue Apr 28 07:21:05 UTC 2015


Hi Hilaire,

I wonder: do you really need the value server-side?
If you just want to manipulate the DOM but not send any value server-side, I would do it like this:

(field := mold at: #civility)
   onChange: (html jQuery this value) equals: ‘missis’ asJavascript
				then: (html jQuery: #maiden) show
                 		then: (html jQuery: #maiden) hide)

This will avoid doing a server-side call and has the advantage of immediate updating on your webbrowser without the delay of a server round-trip.

Also, in this case, the generation of the javascript is small and readable, but for such ‘static’ javascript, it’s better to put them in a separate file and only call the necessary function from your Seaside code. For example:

(field := mold at: #civility)
   onChange: (html javascript call: ‘maidenToggle’ with: (html jQuery this))

cheers,
Johan

> On 27 Apr 2015, at 10:50, Hilaire <hilaire at drgeo.eu> wrote:
> 
> Thanks for your tips.
> 
> Based on your tips, I have to do it a bit differently as my select list
> is built from symbols (#mister, #miss #misses) and Seaside in that case,
> only store index number in the option list value attribute:
> 
>          <option value="1">Madame</option>
>          <option value="2" selected="selected">Mademoiselle</option>
>          <option value="3">Monsieur</option>
> 
> 
> Therefore the (JSStream on: 'options[selectedIndex].text') sent to the
> ajax callback these index number (1 2 or 3) and not my symbol.
> 
> However I discover the 'html jQuery ajax serialize:' does two things:
> send the jqueried input field value to the server and fire its Seaside
> callback, where my symbol are known.
> 
> (field := mold at: #civility)
>    onChange: [ :aHtml |
>        html jQuery ajax
>            serialize: html jQuery this;
>            script: [ :s |
>                field input == #missis
>                    ifTrue: [s << (s jQuery: #maiden) show]
>                    ifFalse: [s << (s jQuery: #maiden) hide]]
> 
> Now it seems to work locally, but stuff is uncoupled and asynchrone:
> do I have the risk the script is fired before the serialize is terminated?
> 
> Thanks
> 
> Hilaire
> 
> Le 27/04/2015 00:57, Bob Arning a écrit :
>> This works for me:
>> 
> 
> -- 
> Dr. Geo - http://drgeo.eu
> iStoa - http://istoa.drgeo.eu
> 
> 
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside



More information about the seaside mailing list