読者です 読者をやめる 読者になる 読者になる

methods on autocomplete prior to initial

Wicket モーダルウィンドウに Autocompleteや Datepicker を配置した時、選択の前にウィンドウを閉じた場合に残る Autocompete やカレンダー表示などが残ってしまう問題、
これを回避するために、、

  $('div[class="w_caption"]').mouseover(function(){
    $('input[class="ui-autocomplete-input"]').autocomplete("close");
    $('input[class="datepicker hasDatepicker"]').datepicker("hide");
  });
  $('button').mouseover(function(){
    $('input[class="ui-autocomplete-input"]').autocomplete("close");
    $('input[class="datepicker hasDatepicker"]').datepicker("hide");
  });


を実行してマウスカーソルのイベントで対処していたが、これだと、Autocomplete の close は、、

以下、エラーが発生することがある。たいていのケースがこれで良かったのに。。。

Uncaught Error: cannot call methods on autocomplete prior to initialization; attempted to call method 'close'n.extend.error

@ jquery-2.1.4.min.js:2(anonymous function)
@ jquery-ui-1.11.4.custom.min.js:6n.extend.each
@ jquery-2.1.4.min.js:2n.fn.n.each
@ jquery-2.1.4.min.js:2e.fn.(anonymous function)
@ jquery-ui-1.11.4.custom.min.js:6(anonymous function)

Autocomplete が動いているの後の操作で動く close の実行なのにどうして初期化してないから云々のエラーになるのか?

諦めて以下のようなメソッドを用意して、Autocomplete の ul - li 表示リストを mouseover で削除する メソッドを用意してこれを
モーダルウィンドウ表示後に呼び出す。

var modalCaptionSetting = function(){
   $('div[class="w_caption"]').mouseover(function(){
      $('ul.ui-autocomplete').empty();
      $('ul.ui-autocomplete').prop('style', 'display: none');
      $('input[class="datepicker hasDatepicker"]').datepicker("hide");
   });
   $('button').mouseover(function(){
      $('ul.ui-autocomplete').empty();
      $('ul.ui-autocomplete').prop('style', 'display: none');
      $('input[class="datepicker hasDatepicker"]').datepicker("hide");
   });
};