[Seaside] jQuery onChange: and onKeyPress:

Paul DeBruicker pdebruic at gmail.com
Wed Jan 9 16:47:09 UTC 2013


Depending on what browsers you have to support you could just use the
HTML5 onInput event rather than both onKeyPress and onChange. See the
following for a list of browsers that support it:
https://developer.mozilla.org/en-US/docs/DOM/window.oninput

Its part of the Seaside-HTML5 package



On 01/09/2013 06:58 AM, bobn at rogers.com wrote:
> Hello,
> I would like to combine the use of onChange: and onKeyPress: to display
> 'Save' & 'Cancel' buttons.
> 
> onChange: is useful when a value is pasted in to the text field, and
> onKeyPress: shows the buttons without having to click elsewhere. So far
> this is working well, except when the first component selected after
> entering text is the 'Save' or 'Cancel' button. When that happens, the
> onChange: action is triggered, which re-renders the button. From the
> user's perspective, the button press was ignored and needs to be done again.
> 
> I would like to have the onKeyPress: action remove the onChange:
> behaviour.  How can that be done?
> Or is there a better way to detect that text was pasted in? (i.e. cases
> where onKeyPress: is not triggered).
> 
> Here is some sample code... 
> If you enter a value into the text input field and then press the
> button, you'll notice the ignored button press.
> 
> renderContentOn: html
> 
> html form: [
> html text: 'Message text:'.
> html textInput
> value: self messageText; 
> onChange: (html jQuery ajax callback: [:inputValue | self messageText:
> inputValue] value: html jQuery this value);
> onChange: ((html jQuery id: 'showThis') load html: [:renderer | self
> renderMessageTextAndButtonOn: renderer]);
> onKeyPress: (html jQuery ajax callback: [:inputValue | self messageText:
> inputValue] value: html jQuery this value);
> onKeyPress: ((html jQuery id: 'showThis') load html: [:renderer | self
> renderMessageTextAndButtonOn: renderer]);
> yourself.
> html horizontalRule.
> html div id: 'showThis'; with: [
> self renderMessageTextAndButtonOn: html]]
> 
> 
> renderMessageTextAndButtonOn: html
> 
> html button callback: [Transcript cr; show: 'Button pressed']; with:
> 'Press'.
> html break.
> html text: self messageText asString
> 
> 
> Thanks, 
> Bob Nemec
> HTS Engineering
> 
> 
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
> 



More information about the seaside mailing list