Chosen: iPad: No se puede cerrar / eliminar li.search-choice (el evento `click.chosen` nunca se activa)

Creado en 4 dic. 2018  ·  5Comentarios  ·  Fuente: harvesthq/chosen

pasos para reproducir

  1. 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".

  2. En "Selección múltiple", agregue un elemento.

  3. Ahora, sin hacer clic en ningún otro lugar, haga clic en la "x" para eliminar el elemento agregado. No pasa nada.

Comportamiento esperado

li.search-choice debe eliminarse. select.chosen-select option debe deseleccionar.

Comportamiento real

li.search-choice elemento permanece. select.chosen-select option continúa seleccionado. El evento chosen.click nunca se activa.

Medio ambiente

  • 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

Información Adicional

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:

  1. Seleccione un elemento del menú desplegable para que se agregue el elemento li.search-choice . Aviso: hacer clic en "x" todavía no hace nada.
  2. Haga clic en otra parte del sitio web; es decir, fuera del campo elegido.
  3. Haga clic en el campo elegido para que se despliegue el menú de búsqueda.
  4. Ahora se puede hacer clic en la "x" en el elemento agregado anteriormente y al hacer clic correctamente se elimina el elemento.

Esto no parece funcionar en un iPad físico real.

Pensamientos

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?

Bug iOS

Todos 5 comentarios

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

¿Fue útil esta página
0 / 5 - 0 calificaciones