Acceda a https://harvesthq.github.io/chosen/ a través de iPad. También se puede reproducir a través de "Alternar barra de herramientas del dispositivo" en la Consola de Chrome y luego seleccionando el dispositivo "iPad".
En "Selección múltiple", agregue un elemento.
Ahora, sin hacer clic en ningún otro lugar, haga clic en la "x" para eliminar el elemento agregado. No pasa nada.
li.search-choice
debe eliminarse. select.chosen-select option
debe deseleccionar.
li.search-choice
elemento permanece. select.chosen-select option
continúa seleccionado. El evento chosen.click
nunca se activa.
Versión elegida : 1.8.7 (en el sitio web elegido) y ~ 1
jQuery o versión de prototipo : 3.2.1 (en el sitio web elegido) y 2.1.4 y 2.2.4
Navegador y versión : Chrome, versión 70.0.3538.110 (compilación oficial) (64 bits)
SO y versión : Windows 10, versión 1709, compilación del SO 16299.492
Una solución alternativa que funciona en los navegadores (a través de "Alternar barra de herramientas del dispositivo" en la consola), pero que no es la más mínima intuitiva, es:
li.search-choice
. Aviso: hacer clic en "x" todavía no hace nada.Esto no parece funcionar en un iPad físico real.
Parece que el clic ni siquiera se inicializa a su debido tiempo cuando se agrega un elemento.
Escaneando rápidamente el código Javascript elegido, veo que se están manejando los siguientes eventos principales, con respecto a hacer clic:
mousedown
mousemove
mouseup
touchstart
touchmove
touchend
Lo que no veo es el manejo de eventos para:
pointerdown
pointermove
pointerup
¿Quizás esto influya en el asunto?
Puede confirmar que (al menos en Chrome que pretende ser un iPad) no puede anular la selección de elementos de una selección múltiple. Tocar la X no hace nada.
Me encontré con el mismo problema.
Descubrí que si se enfoca desde el campo de selección (no solo el campo de cierre, sino que en realidad se enfoca en cualquier otro elemento), los botones X aún no funcionan. Pero en usted se enfocará en este campo nuevamente (y mostrará el menú desplegable), ahora puede eliminar opciones con éxito.
Tan pronto como cierre el menú desplegable, nuevamente, X no funciona.
Puedo reproducir esto tanto en el emulador de Chrome como en el dispositivo físico.
sólo para que quede claro. Al salir del elemento, necesita hacer .chosen-container
para eliminar chosen-container-active
class. Cuando chosen-container-active
se elimina de chosen-container
y se aplica de nuevo mediante un nuevo enfoque, funciona bien en este momento.
Ok, no estoy seguro de qué es exactamente un problema aquí, pero lo hice funcionar para mí.
Primero estoy usando estas opciones al inicializar:
el.chosen({
display_selected_options: false,
hide_results_on_select: false,
});
Por alguna razón, se elige bloquear cualquier interacción con los controles cuando no está enfocado en un campo.
Descubrí que cuando haces clic fuera del campo results_hide
se llama
Parece que el establecimiento de la bandera results_showing
en falso está causando este error.
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;
};
Eliminarlo de la fuente (inconveniente, pero no hay otra opción ahora), debería funcionar.
No estoy seguro de qué está haciendo esto realmente, pero por el momento no noté ningún efecto secundario.
Acabo de inhabilitar elegido para todos los dispositivos móviles y tabletas. No sé si la interfaz de selección táctil incorporada es más fácil de usar que el cuadro de entrada elegido. Solo faltaba la opción de búsqueda, pero de todos modos se sentía extraño en un dispositivo táctil.
Línea 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;
};
Salud
Hannes