You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Alexander Monakhov <do...@gmail.com> on 2011/03/15 15:19:41 UTC
WiQuery DatePicker and Ajax Request
Hi, guys.
Here is a problem I met today:
When I use DatePicker and I change it's model when ajax request
received, on client side date picker's button image doubles.
It happens because on every request date picker is initialized again
and renders new image every time, but old one doesn't disappear, so
user can see several button images.
Here is simple code snippet for testing:
Form<Void> form = new Form<Void>( "form" );
add( form );
DatePicker<Date> datePicker = new DatePicker<Date>( "datepicker",
new Model<Date>(), Date.class );
datePicker.setButtonImageOnly( true );
datePicker.setShowOn( ShowOnEnum.BUTTON );
datePicker.setOutputMarkupPlaceholderTag( true );
form.add( datePicker );
FormComponent<String> submitBtn = new AjaxButton( "submit",
new Model<String>( "Submit" ), form ) {
@Override
protected void onSubmit( AjaxRequestTarget target, Form<?> form ) {
Component datePicker = getForm().get( "datepicker" );
datePicker.setDefaultModelObject( null );
target.addComponent( datePicker );
}
};
form.add( submitBtn );
Here is markup:
<form wicket:id="form">
<input type="text" wicket:id="datepicker"/>
<input type="button" wicket:id="submit"/>
</form>
Is there any solution?
Best regards, Alexander.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: WiQuery DatePicker and Ajax Request
Posted by Alexander Monakhov <do...@gmail.com>.
Thanks for this fast reply!
Best regards, Alexander.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org
Re: WiQuery DatePicker and Ajax Request
Posted by julien roche AKA indiana_jules <ro...@gmail.com>.
Hi,
This is typically a jquery ui problem. Indeed, it creates a div element
after the input field So, each time you refresh the input, a new div will be
inserted. The "best" workaround is to wrap the input into a div / span
element which will be used to refresh the input. With this approach, we
flush the input and the additionnal div created by the datepicker js plugin.
So, you will have:
<form wicket:id="form">
<span wicket:id="datepickercontainer"><input type="text"
wicket:id="datepicker"/></span>
<input type="button" wicket:id="submit"/>
</form>
and
Form<Void> form = new Form<Void>( "form" );
add( form );
WebMarkupContainer datepickercontainer = new
WebMarkupContainer("datepickercontainer");
datepickercontainer.setOutputMarkupId(true);
form.add( datepickercontainer );
DatePicker<Date> datePicker = new DatePicker<Date>( "datepicker",
new Model<Date>(), Date.class );
datePicker.setButtonImageOnly( true );
datePicker.setShowOn( ShowOnEnum.BUTTON );
datePicker.
setOutputMarkupPlaceholderTag( true );
datepickercontainer .add( datePicker );
FormComponent<String> submitBtn = new AjaxButton( "submit",
new Model<String>( "Submit" ), form ) {
@Override
protected void onSubmit( AjaxRequestTarget target, Form<?> form ) {
Component datePicker = getForm().get( "datepicker" );
datePicker.setDefaultModelObject( null );
target.addComponent( datepickercontainer );
}
};
form.add( submitBtn );
Best regards
Julien Roche
On Tue, Mar 15, 2011 at 3:19 PM, Alexander Monakhov <do...@gmail.com>wrote:
> Hi, guys.
>
> Here is a problem I met today:
> When I use DatePicker and I change it's model when ajax request
> received, on client side date picker's button image doubles.
> It happens because on every request date picker is initialized again
> and renders new image every time, but old one doesn't disappear, so
> user can see several button images.
>
> Here is simple code snippet for testing:
> Form<Void> form = new Form<Void>( "form" );
> add( form );
>
> DatePicker<Date> datePicker = new DatePicker<Date>( "datepicker",
> new Model<Date>(), Date.class );
> datePicker.setButtonImageOnly( true );
> datePicker.setShowOn( ShowOnEnum.BUTTON );
> datePicker.setOutputMarkupPlaceholderTag( true );
> form.add( datePicker );
>
> FormComponent<String> submitBtn = new AjaxButton( "submit",
> new Model<String>( "Submit" ), form ) {
>
> @Override
> protected void onSubmit( AjaxRequestTarget target, Form<?> form ) {
> Component datePicker = getForm().get( "datepicker" );
> datePicker.setDefaultModelObject( null );
>
> target.addComponent( datePicker );
> }
>
> };
> form.add( submitBtn );
>
> Here is markup:
> <form wicket:id="form">
> <input type="text" wicket:id="datepicker"/>
> <input type="button" wicket:id="submit"/>
> </form>
>
> Is there any solution?
>
> Best regards, Alexander.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>