2011-03-07 20 views
7

我正在爲使用Java和Wicket的webapp編寫自動完成組件。處理到wicket中的AutoCompleteTextField的onchange事件

有沒有一種方法來處理onchange事件,當用戶選擇的自動完成列表中的一個選項來運行一些代碼?我試圖在AutoCompleteTextField這樣做:

 setOutputMarkupId(true); 
     add(new AjaxEventBehavior("onchange") { 
      @Override 
      protected void onEvent(AjaxRequestTarget target) { 
       System.out.println(getInput()); 
      } 
     }); 

但getInput方法返回null。 :(
是否有辦法來應對onchange事件,並能夠讀取用戶輸入什麼?

感謝您的時間和知識:)

回答

7

onchange事件僅觸發時焦點從組件移開。 (這是一個普遍的瀏覽器/ JavaScript的東西。)

你需要連接你的處理器的 onkeypress事件來代替。

,你需要的不是但AjaxFormComponentUpdatingBehavior

add(new AjaxFormComponentUpdatingBehavior("onchange") { 

     @Override 
     protected void onUpdate(AjaxRequestTarget target) { 
      System.out.println("Value: "+field.getValue()); 

     } 
    }); 

雖然它與getInput()工作過,但通常略高的水平(正常逃脫,由模型支持)getValue()是一個更適合。

+1

嗯,我不這麼認爲......問題不在於該方法不叫,但檢票口組件AutoCompleteTextField返回null作爲其輸入。無論如何,我會嘗試你所說的。 – 2011-03-07 19:53:32

+1

@Manuel Duh,對不起,完全誤讀你的問題。 – biziclop 2011-03-07 22:02:41

+1

這是正確的,謝謝,但現在我有另一個問題。請檢查這個問題,如果你有時間:http://stackoverflow.com/questions/5226492/using-autocompletetextfield-in-wicket-without-string-as-the-generic-type – 2011-03-07 23:18:12

相關問題