David Lock created WICKET-5432:
----------------------------------
Summary: OnChangeAjaxBehavior continually triggered in IE11
Key: WICKET-5432
URL: https://issues.apache.org/jira/browse/WICKET-5432
Project: Wicket
Issue Type: Bug
Components: wicket
Affects Versions: 6.12.0
Environment: Internet Explorer 11
Reporter: David Lock
I have a DataTable with a single column. The table has a toolbar assigned
which provides sorting and filtering.
The filtering is done via TextField that has the following OnChangeAjaxBehavior
assigned.
OnChangeAjaxBehavior onChangeAjaxBehavior = new OnChangeAjaxBehavior()
{
@Override
protected void onUpdate(AjaxRequestTarget target)
{
FilteredLazyLoadingDataProvider<T, S> provider =
(FilteredLazyLoadingDataProvider<T, S>)
dataTable.getDataProvider();
provider.filter(FilterAjaxFallbackOrderByBorder.this);
target.add(dataTable);
target.appendJavaScript("moveCaretToEnd(document.getElementById('" +
m_filter.getMarkupId() + "'))");
}
@Override
protected void updateAjaxAttributes(AjaxRequestAttributes attributes)
{
super.updateAjaxAttributes(attributes);
attributes.setThrottlingSettings(new ThrottlingSettings(id,
Duration.milliseconds(200), true));
}
};
When I view a page in Chrome/Firefox everything works as expected. When I view
the page in Internet Explorer 11 I observer the following issue.
If the filter textfield has focus and is empty, the
OnChangeAjaxBehavior.onUpdate method is continually called (ajax requests spam
the server). As soon as I enter a value into the text field, the filtering is
performed and the ajax calls cease to spam the server.
What is interesting is if I create a simple form with just a textfield in and
assign the above OnChangeAjaxBehaviour, the textfield in the form does not have
the same issue as the one in the table header.
My app is deployed in Tomcat 7.0.30 (although the issue can also been seen when
testing via jetty)
_______________
Response from Martin in the user forum....
And the reason for the problem is at
https://github.com/apache/wicket/blob/master/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js?source=c#L2620
I guess IE 11 finally implements 'oninput' event for text inputs. This is
OK, we have to improve our #isIE() method to count IE 11 as evergreen
browser.
But it seems they broke somehow the other event listeners ...
--
This message was sent by Atlassian JIRA
(v6.1#6144)