Uploaded image for project: 'Wicket'
  1. Wicket
  2. WICKET-5432

OnChangeAjaxBehavior continually triggered in IE11

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Duplicate
    • 6.12.0
    • None
    • wicket
    • None
    • Internet Explorer 11

    Description

      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 ...

      Attachments

        1. wicket-quickstart.7z
          24 kB
          David Lock

        Issue Links

          Activity

            People

              Unassigned Unassigned
              dlock David Lock
              Votes:
              1 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: