Usando jQuery 2.1.0 y jQuery.interfaz de usuario 1.11.0 Probado en iOS 7. el iPhone y el iPad Mini. Funciona en android y regular de los navegadores.
El problema
Hemos actualizado recientemente de jQuery UI 1.10.0 a 1.11.0 y ahora, al hacer clic en un elemento en un autocompletar lista de resultados, sólo se consigue un pase, usted tiene que hacer clic en el mismo elemento nuevo para conseguir un evento click. Esto funciona bien con la versión 1.10.0.
(JSFiddle enlace en los comentarios)
Lo que no funciona
el uso de css {cursor: pointer}
no funciona
utilizando onclick=""
no funciona
(JSFiddle enlace en los comentarios)
Lo más raro
Pero aquí viene la diversión/raro. Funciona en JSFiddle editar ver, pero no en el JSFiddle «/mostrar la página».
JSFiddles: (escriba una carta para mostrar los resultados de la «s» es una buena)
- La vista Html (no funciona)
- La vista de edición (obras)
He estado trabajando en esto durante días, pero no había sido capaz de reproducir en JSFiddle antes de la prueba, sólo la vista html. Así que ahora me dirijo a vosotros. Yo no puedo por la vida de averiguar por qué la página desencadena un evento click, y el otro no.
Estoy utilizando la función más básica de jQuery autocomplete. De hecho, usando el mismo código que se presenta en jQuery interfaz de usuario de la página de inicio.
La pregunta
Así que, ¿cómo conseguir que la función autocompletar de trabajo con un solo clic en iOS sobre el /la página de la exposición?
(Voy a publicar enlaces en los comentarios porque no tengo 10 rep todavía. A menos que no tengo suficiente rep comentar…)
Informe de error para este problema: bugs.jqueryui.com/ticket/10544
OriginalEl autor Snorre Kim | 2014-08-13
Sólo un poco más tarde, pero
Que también solucionado problema para la selección , sin Embargo, no haga clic en archivo de autocompletar de entrada que me he registrado en principio. ¿tiene usted alguna idea ?
No funciona con
autoFocus
conjunto paratrue
, porque entonces siempre el primer elemento es seleccionado independientemente de lo que en realidad haga clic en. De lo contrario, una buena solución.Esta «solución» es sólo romper el autocompletar. No escuchar la respuesta.
las soluciones que funcionan si
autoFocus
estrue
?OriginalEl autor onlydimon
Por alguna extraña razón
@onlydimon's
respuesta no funcionó para mí. Parece que necesitamos eventomouseenter
. Siguiente respuesta funcionado bien para mí.He añadido una condición para asegurarse de que no se rompa en otros dispositivos.
menufocus
fue el culpable en mi final. a pesar de que sólo tenía que llamar de la una vez, no cada vez que se abre. estaba usando la función de autocompletar en reaccionar por lo que me acaban de poner elif
declaración encomponentDidMount
y se utiliza unref
para agarrar el nodo dom.$(this.refs.foo.getDOMNode()).autocomplete('widget').off('menufocus')
OriginalEl autor Sangram Nandkhile
Edificio en onlydimon la solución:
He reducido la lista de eventos a los que sólo jQuery ‘mouseenter’ evento. La eliminación de este corrige el bug para mí. Además, no hay necesidad de quitar cada vez que la lista está abierta; una vez es suficiente.
autoFocus
conjunto paratrue
, porque entonces siempre el primer elemento es seleccionado independientemente de lo que en realidad haga clic en. De lo contrario, una buena solución.Es un trabajo para mí. Gracias 🙂
OriginalEl autor fvsch
Escribió un super desagradable hack que parece hacer el truco para mí. Esto es lo que hice.
(opcional) Intentar una vez más… en caso de que el conjunto de tiempo no fue suficiente para el elemento al aumento de la interfaz de usuario-estado-clase de enfoque.
Esperemos que alguien tiene una mejor solución, aunque!
OriginalEl autor Liam Johnston
Esto funcionó para mí (obras en drupal 8). Ahora un toque en los dispositivos iOS redirigir a la página de resultado de búsqueda.
OriginalEl autor YPatel
Basado en
Liam Johnston
solución, esto lo escribí uno que funciona para mí con enfoque automático se establece a true:OriginalEl autor Raphaël Malié
Autocompletar widget tiene algunos construido en eventos a los que puedes añadir en tu código…
jqueryui
Yo estaba teniendo el mismo problema y finalmente descubrió cómo lo tweek el código y la fuerza de los dispositivos móviles para responder con un clic.
Básicamente para dispositivos móviles (iOs) cuando toque en la lista de autocompletar ‘de una vez’, se activará el «foco» del evento, si hace clic una vez más (2do clic) se va a leer el evento como «seleccionar». Así, en orden de fuerza de los dispositivos iOs para seleccionar en un solo clic usted tiene a la fuerza para seleccionar el primer clic.
OriginalEl autor andrewbkil
Uso fastclick.js se va a resolver este problema. Sé que esto js se utiliza para la eliminación de 300ms tap delay pero resuelto este problema también para mí.
Descarga el record de la versión de FastClick (como alternativa, puede seguir las instrucciones para instalar el no-record de la versión aquí)
Incluir el archivo en el proyecto:
<script src = «js/fastclick.min.js»></script>
Adjuntar el FastClick objeto en el documento después de FastClick ha sido cargado:
var attachFastClick = Origami.fastclick;
attachFastClick(documento.cuerpo);
NOTA: Si intenta utilizar FastClick la no-record manera, yo.e:
A continuación, utilizar
FastClick.adjuntar(documento.cuerpo);
pero incluyendo el record de archivo que recibirá los errores (diciendo que FastClick es indefinido). Si usted está utilizando el record de archivo debe tener acceso a él a través de Origami.
OriginalEl autor Swapnil Man
Solución de Raphaël Malié es casi perfecto, pero necesita evt.preventDefault() para touchend, de lo contrario se generará un clic en un enlace/botón que está debajo de artículo pulsado.
OriginalEl autor CRK
Estoy trabajando con jQuery UI y córdoba, y tengo el mismo problema en la aplicación, mi solución para ese problema es este:
Esta parada el foco en el elemento seleccionado.
OriginalEl autor Jorge Mejia
Este código funciona con enfoque automático
OriginalEl autor cby016