iPad経由でhttps://harvesthq.github.io/chosen/にアクセスし
「複数選択」の下に、要素を追加します。
ここで、他の場所をクリックせずに、「x」をクリックして追加された要素を削除します。 何も起こりません。
li.search-choice
要素を削除する必要があります。 select.chosen-select option
選択を解除する必要があります。
li.search-choice
要素は残ります。 select.chosen-select option
は引き続き選択されます。 イベントchosen.click
は発生しません。
選択されたバージョン:1.8.7(選択されたWebサイト上)および〜1
jQueryまたはプロトタイプバージョン:3.2.1(選択されたWebサイト上)および2.1.4および2.2.4
ブラウザとバージョン:Chrome、バージョン70.0.3538.110(公式ビルド)(64ビット)
OSとバージョン:Windows 10、バージョン1709、OSビルド16299.492
ブラウザで(コンソールの「デバイスツールバーの切り替え」を介して)機能するが、少し直感的ではない回避策は次のとおりです。
li.search-choice
要素を追加します。 注意:「x」をクリックしても何も起こりません。これは、実際の物理的なiPadでは機能しないようです。
要素が追加されると、クリックが時間内に初期化されないようです。
選択したJavascriptコードをすばやくスキャンすると、クリックに関して次のコアイベントが処理されていることがわかります。
mousedown
mousemove
mouseup
touchstart
touchmove
touchend
表示されないのは、次のイベント処理です。
pointerdown
pointermove
pointerup
おそらくこれは問題に影響を及ぼしますか?
(少なくともiPadのふりをしているChromeでは)複数選択からアイテムの選択を解除できないことを確認できます。 Xをタップしても何も起こりません。
私は同じ問題に遭遇しました。
選択フィールドからフォーカスアウトする場合(フィールドを閉じるだけでなく、実際には他の要素にフォーカスする場合)、Xボタンはまだ機能しないことがわかりました。 ただし、このフィールドに再び焦点を合わせて(そしてドロップダウンを表示して)、オプションを正常に削除できるようになりました。
ドロップダウンを閉じるとすぐに、Xは機能しなくなります。
これは、Chromeエミュレーターと物理デバイスの両方で再現できます。
明確にするためだけに。 要素から抜け出すことにより、 chosen-container-active
クラスを削除するために.chosen-container
を作成する必要があります。 chosen-container-active
がchosen-container
から削除され、新しいフォーカスによって再度適用されると、現時点ではうまく機能します。
さて、ここで何が問題なのか正確にはわかりませんが、私はそれをうまく機能させました。
まず、初期化するときに次のオプションを使用します。
el.chosen({
display_selected_options: false,
hide_results_on_select: false,
});
いくつかの理由で、フィールドに集中していないときにコントロールとの相互作用をブロックすることが選択されています。
フィールドの外側をクリックするとresults_hide
が呼び出され、このメソッドはフィールドへのアクセスを完全にブロックすることがわかりました(少なくともモバイル/タブレットでは)。 だから私はこの振る舞いを防ぐ方法を探していました。
results_showing
フラグをfalseに設定すると、このバグが発生しているようです。
Chosen.prototype.results_hide = function() {
if (this.results_showing) {
this.result_clear_highlight();
this.container.removeClass("chosen-with-drop");
this.form_field_jq.trigger("chosen:hiding_dropdown", {
chosen: this
});
}
// removed because of mobile issue with removeing options
// return this.results_showing = false;
};
ソースからそれを削除すると(不便ですが、今は他の選択肢はありません)、うまくいくはずです。
これが実際に何をしているのかはわかりませんが、現時点では副作用は見られませんでした。
すべてのモバイルデバイスとタブレットで選択を無効にしました。 組み込みのタッチ選択インターフェイスが、選択した入力ボックスよりもユーザーフレンドリーかどうかはわかりません。 検索オプションがないだけですが、タッチデバイスではとにかく奇妙に感じました。
590行目:
AbstractChosen.browser_is_supported = function() {
if ("Microsoft Internet Explorer" === window.navigator.appName) {
return document.documentMode >= 8;
}
if (/iP(od|hone)/i.test(window.navigator.userAgent) || /IEMobile/i.test(window.navigator.userAgent) || /Windows Phone/i.test(window.navigator.userAgent) || /BlackBerry/i.test(window.navigator.userAgent) || /BB10/i.test(window.navigator.userAgent) || /Android.*Mobile/i.test(window.navigator.userAgent)) {
return false;
}
if ((/iPhone|iPod|iPad|Android|android|playbook|silk|BlackBerry/).test(navigator.userAgent))
{
return false;
}
if (/Android/i.test(window.navigator.userAgent)) {
if (/Mobile/i.test(window.navigator.userAgent)) {
return false;
}
}
return true;
};
乾杯
ハネス