2011-11-08 5 views
3

マイAutoCompleteTextField(getChoicesメソッドの実装や作業)と呼ばれていませんテキストフィールドには表示されますが、オートコンプリートメニューから項目を選択した場合は表示されません。メニューの文字列はテキストフィールドに書き込まれますが、別の変更が行われたときにのみonUpdateが呼び出されます。のWicket 1.5オートコンプリートテキストフィールドにonUpdate行動は

編集:Wicket 1.5以前はこれが機能していました。

答えて

4

AjaxFormComponentUpdatingBehavior("onchange")を追加します。

OnChangeAjaxbehavior()は、すべてのキーを押すときと同じように、すべての変更(Javascript Wicket.ChangeHandlerを使用)で発生するようです。

AjaxFormComponentUpdatingBehaviorを使用すると、異なる値のテキストフィールドからのフォーカスやオートコンプリートリストからの値の選択など、イベントリスナーがonChange JavaScriptイベントに追加されます。

まだOnChangeAjaxbehavior extends AjaxFormComponentUpdatingBehaviorがこのロジックを継承しない理由がわからない場合は、オーバーライドする必要があります。

UPDATEこれはよくOnChangeAjaxBehaviorを使用した場合onchange javascriptのイベントは無視されている理由かもしれません。改札-ajax.jsで見つかったWicket.ChangeHandlerのソースコードは、さまざまなイベントのハンドラを設定します:ブラウザがあれば

obj.onchangeoriginal = obj.onchange
    • onchangeoriginalonchangeイベントハンドラをバックアップしますIE、Safariなど、元のonchangeイベントハンドラをonKeyUp,onpasteoncutに割り当てます。
    • それ以外の場合は、元のonchangeイベントハンドラをonInputに割り当てます。
    • 最後に、それは常にonchangeイベントハンドラ削除:wicket-autocomplete.js

      obj.onchange = function(event){ 
          Wicket.stopEvent(event); 
      }

    コードを手動で項目選択でonchangeイベントハンドラを発射しているようです。おそらく最初にobj.onchangeoriginalを確認する必要があります。

    したがって、このjsはOnDomReadyで実行されているため、これらの2つの動作を共存させることは可能でしょうか。おそらく、新しいJIRAを提出する時でしょうか?これは、わずかに関連する問題になる可能性があります

    WICKET-2424: OnChangeAjaxBehavior + DatePicker do not work together

+0

おかげで、それは今働いています!この動作の背後にあるロジックを知らないでください、私のバグのようです... – rotsch

+0

私はこの問題も発見しました。この変更で修正されているはずです: 'obj.onchangeoriginal = obj.onchange;'しかし、期待どおりに動作しません。 – rotsch

+0

ええと...まずは 'wicket-autocomplete.js'で' obj.onchangeoriginal'をチェックしているようです。 –

関連する問題