[Seaside] jQuery variable check for onBlur

jtuchel at objektfabrik.de jtuchel at objektfabrik.de
Wed Apr 10 13:21:52 UTC 2013


Hi again,

without having tested it, this may look something like

onSuccess: (
     (JSStream on: 'saveCancelButtonClicked == 1')
       then: ((html jQuery id:  'selectedComponent')  load html: 
[:renderer|  self  renderSelectedComponentOn:  renderer]))
       else: ....)

Please let us know how the code ends up looking once you solved. I'd be 
very interested to learn more about this.

Joachim


Am 10.04.13 15:09, schrieb jtuchel at objektfabrik.de:
> Hi Bob,
>
> I guess what you are looking for is JSIfThenElse. I have no example at 
> hand, but remember two things about it:
> * It feels strange to send then:else: to a JSObject. Not very 
> Smalltalkish.
> * It does have a bug that I reported on this list a long time ago. It 
> only renders the (if) ? then : else; form. So you should change 
> #javascripContentOn: to
>
> javascriptContentOn: aStream
>     aStream nextPutAll: 'if('.
>     super javascriptContentOn: aStream.
>     aStream nextPutAll: ') {'.
>     aStream javascript: self trueStatement.
>     aStream nextPutAll: '} else {'.
>     aStream javascript: self falseStatement.
>     aStream nextPut: $}.
>
> for more complex statements.
>
> In your case, what you need to do first is produce a JSObject that 
> represents the results of the client-side check 
> "saveCancelButtonClicked == 1" and send it #then: or #then:else. I'd 
> be interested in how you can create that JSObject... I guess it's 
> easy....
>
> Joachim
>
>
> Am 10.04.13 14:59, schrieb bobn at rogers.com:
>> I posted this on Stack Overflow... no answer so far:
>> How do I code a variable check into a Seaside jQuery onSuccess: script?
>> I have an application with input fields that trigger a value change 
>> followed by a re-rendering of the view. It works nicely to provide 
>> lively feedback of domain data based on displayed values.
>> The view shows 'Save' and 'Cancel' buttons if there are changes 
>> pending. If the user clicks on either button right after an input 
>> field, the onBlur: script of the input fields prevents the button 
>> action from taking place. The recommended solution (button click 
>> event lost due to the alert box in text box onblur event 
>> <http://stackoverflow.com/questions/3245350/button-click-event-lost-due-to-the-alert-box-in-text-box-onblur-event>) 
>> is to use the button's 'onmousedown' event to set a global variable 
>> that the onBlur script checks.
>> With my test code I can see the global 'saveCancelButtonClicked' 
>> being set, but I don't know how to check the value in order to 
>> prevent the rendering step.
>> |html button
>>    onMouseDown:  'saveCancelButtonClicked = 1;';     ...
>>
>> html textInput
>>   onBlur:  ((
>>    html jQuery ajax
>>        callback:  [:stringValue|  self  checkValue: stringValue]  
>>            value:  html jQuerythis  value)
>>        onSuccess:  (
>>          (html jQuery id:  'selectedComponent')  load html: 
>> [:renderer|             renderer script: 
>> 'console.log(saveCancelButtonClicked);'.
>>            self  renderSelectedComponentOn:  renderer])  )]|
>> I can see the console.log showing '1' if the save button is pressed. 
>> So how do I check the value and skip the 'self 
>> renderSelectedComponentOn:' step?
>> It's easy enough to do in javascript (trivial if statement), but I 
>> have not found an example in Seaside.
>> Thanks for any help,
>> Bob Nemec
>>
>>
>> _______________________________________________
>> 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
>



More information about the seaside mailing list