After the zone update, the id is probably no longer simply "transactionText".
Try injecting the field and using the clientId, something like this:

@Component
private TextField transactionText;

public void onSetFocus() {
    javaScriptSupport.autofocus(FieldFocusPriority.OVERRIDE, 
transactionText.getClientId());
}


Best regards,
Jacob Poder


-----Original Message-----
From: Thomas Jensen [mailto:tapes...@tj-development.dk] 
Sent: Wednesday, October 03, 2012 10:14 PM
To: Tapestry users
Subject: Re: Change textfield focus on zone update

2012/10/3 Poder, Jacob <jacob.po...@thermofisher.com>

> There is even a specific method for the purpose, see 
> JavaScriptSupport.autofocus
>
> I have used that successfully in a similar case.
>
> Best regards,
> Jacob Poder
>
>
> -----Original Message-----
> From: Lance Java [mailto:lance.j...@googlemail.com]
> Sent: Wednesday, October 03, 2012 9:50 AM
> To: users@tapestry.apache.org
> Subject: Re: Change textfield focus on zone update
>
> On second thought... it might be easier to send some javascript to the 
> client when form 1 is posted via JavaScriptSupport.addScript(...)
>
>
>
> --
> View this message in context:
> http://tapestry.1045711.n5.nabble.com/Change-textfield-focus-on-zone-u
> pdate-tp5716599p5716601.html Sent from the Tapestry - User mailing 
> list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>
Hi,
thanks for the reply's. I've tried to use the JavaScriptSupport but I can't 
seem to get it to do exactly what I want. I've got the following code for zone 
2 (I've set visible="true" for testing purposes, it is supposed to be
"false"):
*
*
*<t:zone t:id="popupZone" id="popupZone" visible="true">*
*        <div class="overlay">*
*            <div style="float:right"><t:actionlink
t:id="closePopupZone">X</t:actionlink></div>*
*            <strong>${selectedCustomer.firstName}
${selectedCustomer.lastName} Saldo: ${selectedCustomer.saldo} </strong>*
*            <p>*
*                <t:form t:id="transaction">*
*                    <p>Tekst: <t:textfield t:id="transactionText"
t:value="transaction.text" size="50"/></p>*
*                    <p>Køb: <t:textfield t:value="transaction.value"
size="10"/></p>*
*                    <t:submit value="Gem"/>*
*                </t:form>*
*            </p>*
*        </div>*
*        <t:trigger event="setFocus"/>*
*    </t:zone>*

The "onSetFocus" event looks like this:

   * @Log*
*    public void onSetFocus() {*
*
*
*        //if(selectedCustomer.getFirstName() != null) {*
*          javaScriptSupport.autofocus(FieldFocusPriority.OVERRIDE,
"transactionText");*
*        //}*
*
*
*
*
*    }*

When first loading the page, the "onSetFocus" event is called and the focus is 
set to "transactionText" field, as expected. But when submitting the form in 
zone 1, which updates zone 2, I get the following error "cannot call method 
'activate' on null" (the "onSetFocus" is called, when updating zone2).

The problem I actually try to solve, is to set focus on the "transactionText" 
field, when zone 2 is updated, so it should not have focus on initial page load.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to