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");
});
};