最近、jquery uiとそのオートコンプリートプラグインを更新しましたが、新しいバージョンでは、マウスクリックでオプションを選択できず、上下の矢印を使用する必要があります。マウスクリックで選択を再度有効にするにはどうすればよいですか?
ところで、新しいバージョンは1.9.1、古いバージョンは1.8.2でした
最近、jquery uiとそのオートコンプリートプラグインを更新しましたが、新しいバージョンでは、マウスクリックでオプションを選択できず、上下の矢印を使用する必要があります。マウスクリックで選択を再度有効にするにはどうすればよいですか?
ところで、新しいバージョンは1.9.1、古いバージョンは1.8.2でした
私の場合、マウス選択機能は古いサードパーティのjQueryプラグインによって無効にされていました。このスレッドは私に何が間違っているのかについての考えを与えました:http://forum.jquery.com/topic/autocomplete-click-to-select-item-not-working-in-1-9-1
古いバージョンのjquery検証プラグイン(https://github.com/jzaefferer/jquery-validation)を使用していました。プラグインを次々と無効にして、どのプラグインが誤動作を引き起こしているかを確認しました。
1.11.4の時点で利用可能な最新バージョンのjquery-uiを使用しても、同じ問題が発生しました
ファイルjquery-ui.jsのソースコードを確認すると、次のような部分が見つかりました。
"click .ui-menu-item": function( event ) {
var target = $( event.target );
if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) {
this.select( event );
// Only set the mouseHandled flag if the event will bubble, see #9469.
if ( !event.isPropagationStopped() ) {
this.mouseHandled = true;
}
問題は、mouseHandled
varがに設定されていることtrue
です。event
ただし、伝播が停止されていない場合にのみ発生します。
解決策として、オートコンプリートを次のように定義しました。
$('.autocomplete').autocomplete({
source: ['value1','value2','value3','value4'], //my source
select: function(event, ui){
event.stopPropagation(); //the select event will work next time you click
//your logic comes here ...
}
})
それは私のために働いた、私はそれがあなたのために働くことを願っています!=)
最新バージョンではこれが修正されています。
http://jqueryvalidation.org/からjquery.validate.jsの最新バージョンに更新するだけです。たとえば、MicrosoftのAjax CDNをダウンロードします(ホットリンクを歓迎します) http://ajax.aspnetcdn.com/ajax/jquery.validate/1.13.1/jquery.validate.js