2015-05-06 62 views
0

我有一個項目列表,其上有一個輸入字段。
輸入字段是一個過濾器,它應該根據您輸入到輸入字段的文本過濾列表。AjaxFormComponentUpdatingBehavior onkeypress

例如: 如果您鍵入「th」,它應該過濾列表,以便所有項目都應以「th」開頭。

對於這個我使用AjaxFormComponentUpadingBehavior( 「onkeypress事件」)。
但是這似乎並沒有按照它們應該的方式工作。
當我輸入某些東西時,會清除它並將光標移到輸入字段的第一個字母。

我已經試過的onkeyup和onkeydown事件,所有這些行事方式相同。
現在我正在做一個鏈接點擊過濾器,但我希望它與onkeypress一樣無縫。

有沒有辦法做到這一點? 我使用的檢票口的1.4.x

下面是代碼:

 // Customer Filter input field 
     customerFilterTxt = new TextField<String>("customerFilterTxt", new PropertyModel<String>(this, "slectedCustomerFilterStr")); 
     customerFilterTxt.setOutputMarkupPlaceholderTag(true); 
     customerListViewContainer.add(customerFilterTxt); 

     // Ajax behavior for customer group filter auto complete input filed 
     AjaxFormComponentUpdatingBehavior customerGroupFilterBehave = new AjaxFormComponentUpdatingBehavior("onkeypress") { 
      private static final long serialVersionUID = 1L; 

      @Override 
      protected void onUpdate(AjaxRequestTarget target) { 
       List<CustomerGroupBean> filterList = new ArrayList<CustomerGroupBean>(); 
       if(Util.hasValue(selectedCustomerGroupFilterStr)) { 
        String str = selectedCustomerGroupFilterStr.toUpperCase(); 

        for(CustomerGroupBean group : custGroupList) { 
         if(group.getRightGroupName().toUpperCase().contains(str)) { 
          filterList.add(group); 
         } 
        } 

        custGroupListView.setList(filterList); 

       } else { 
        custGroupListView.setList(custGroupList); 
       } 

       target.addComponent(customerFilterTxt); 
       target.addComponent(custGroupListViewContainer); 
      } 
     }; 
     customerGroupFilterTxt.add(customerGroupFilterBehave); 
+0

請張貼一些代碼。它在另一個瀏覽器中的行爲如何? – Imperative

+0

我剛剛使用輸入字段和ajax行爲的代碼編輯了問題。 至於瀏覽器去,我已經在鉻(最新),Firefox(最新),和IE 11嘗試它,所有給了我相同的結果。 如果你碰巧有檢票1.4.x的,只是儘量創造與onkeypress事件的AJAX行爲,我敢肯定它會工作,我只是在闡述問題的方式。 –

+0

嘗試'OnChangeAjaxBehavior',而不是''AjaxFormComponentUpdatingBehavior兩個 –

回答

1

要添加輸入字段到更新方法中的更新調用。這指示Wicket替換輸入字段,再次渲染文本字段。這就是爲什麼光標跳到第一個位置。爲什麼要將文本字段添加到更新中?我沒有看到它的任何必要。您也可以使用活動"onkeyup"

+0

添加輸入字段是一個錯誤。 所以我現在做的是,我阻止了這個說法,把onkeypress改成了onkeyup,它有點解決了一些問題,但並不完全。 只要完成鍵入,它仍然會跳轉到第一個光標。 –

+0

我構建了一個非常簡單的頁面,但無法重現該效果:http://pastebin.com/LHfzCJvY – Imperative

+0

您的意思是說,我工作過罰款給你嗎? –