Acesse https://harvesthq.github.io/chosen/ via iPad. Também reproduzível através da "barra de ferramentas Alternar dispositivo" no console do Chrome e, em seguida, selecionando o dispositivo "iPad".
Em "Seleção múltipla", adicione um elemento.
Agora - sem clicar em outro lugar - clique no "x" para remover o elemento adicionado. Nada acontece.
li.search-choice
deve ser removido. select.chosen-select option
deve ser desmarcado.
li.search-choice
fica. select.chosen-select option
continua a ser selecionado. O evento chosen.click
nunca é acionado.
Versão escolhida : 1.8.7 (no site escolhido) e ~ 1
Versão jQuery ou Protótipo : 3.2.1 (no site escolhido) e 2.1.4 e 2.2.4
Navegador e versão : Chrome, versão 70.0.3538.110 (versão oficial) (64 bits)
SO e versão : Windows 10, versão 1709, OS Build 16299.492
Uma solução alternativa que funciona em navegadores (por meio de "Alternar barra de ferramentas do dispositivo" no Console), mas não é nem um pouco intuitiva, é:
li.search-choice
seja adicionado. Aviso: clicar em "x" ainda não faz nada.Isso não parece funcionar em um iPad físico real.
Parece que o clique nem mesmo é inicializado no devido tempo quando um elemento é adicionado.
Verificando rapidamente o código Javascript escolhido, vejo que os seguintes eventos principais - com relação ao clique - estão sendo manipulados:
mousedown
mousemove
mouseup
touchstart
touchmove
touchend
O que não vejo é o tratamento de eventos para:
pointerdown
pointermove
pointerup
Talvez isso tenha influência sobre o assunto?
Pode confirmar que (pelo menos no Chrome fingindo ser um iPad) você não pode desmarcar itens de uma seleção múltipla. Tocar no X não faz nada.
Eu me deparei com o mesmo problema.
Descobri que se você focar fora do campo de seleção (não apenas fechar o campo, mas realmente focar em qualquer outro elemento), os botões X ainda não funcionam. Mas em você se concentrará neste campo novamente (e exibirá o menu suspenso), agora você pode excluir opções com êxito.
Assim que você fecha o menu suspenso, novamente, o X não está funcionando.
Posso reproduzir isso no emulador do Chrome e no dispositivo físico.
apenas para deixar claro. Ao sair do elemento, você precisa fazer .chosen-container
para eliminar a classe chosen-container-active
. Quando chosen-container-active
é removido de chosen-container
e aplicado novamente com um novo enfoque, funciona bem neste momento.
Ok, não tenho certeza do que exatamente é um problema aqui, mas fiz funcionar para mim.
Primeiro, estou usando essas opções ao inicializar:
el.chosen({
display_selected_options: false,
hide_results_on_select: false,
});
Por alguns motivos, o escolhido está bloqueando todas as interações com os controles quando você não está focado em um campo.
Descobri que quando você clica fora do campo results_hide
é chamado, e esse método bloqueia completamente o acesso do campo (pelo menos no celular / tablet). Então, eu estava procurando uma maneira de evitar esse comportamento.
Parece que definir o sinalizador results_showing
como falso está causando esse bug.
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;
};
Removê-lo da fonte (inconveniente, mas nenhuma outra escolha agora) deve resolver o problema.
Não tenho certeza do que isso está realmente fazendo, mas no momento não notei nenhum efeito colateral.
Acabei de desabilitar o escolhido para todos os dispositivos móveis e tablets. Não sei se a interface de seleção por toque integrada é mais amigável do que a caixa de entrada escolhida. Só faltando a opção de pesquisa, mas parecia estranho em um dispositivo de toque.
Linha 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;
};
Saúde
Hannes