Je recherche un plugin drag & DROP qui fonctionne sur les appareils tactiles.
Je voudrais une fonctionnalité similaire au plugin jQuery UI qui autorise les éléments "droppables".
Le plugin jqtouch prend en charge le glisser-déposer, mais pas le drop.
Voici le glisser-déposer qui ne prend en charge que l'iPhone / iPad.
Quelqu'un peut-il me diriger vers un plugin glisser-déposer qui fonctionne sur Android / iOS?
... Ou il pourrait être possible de mettre à jour le plugin jqtouch pour la droppabilité, il fonctionne déjà sur Andriod et IOS.
Merci!
Réponses:
Vous pouvez utiliser l'interface utilisateur Jquery pour le glisser-déposer avec une bibliothèque supplémentaire qui traduit les événements de la souris en tactile, ce dont vous avez besoin, la bibliothèque que je recommande est https://github.com/furf/jquery-ui-touch-punch , avec votre glisser-déposer depuis l'interface utilisateur de Jquery devrait fonctionner sur les appareils tactiles
ou vous pouvez utiliser ce code que j'utilise, il convertit également les événements de la souris en toucher et cela fonctionne comme par magie.
Et dans votre document.ready appelez simplement la fonction init ()
code trouvé à partir d' ici
la source
document.getElementById('draggableContainer').addEventListener(...
Pour tous ceux qui cherchent à utiliser cela et à conserver la fonctionnalité `` clic '' (comme John Landheer le mentionne dans son commentaire), vous pouvez le faire avec seulement quelques modifications:
Ajoutez quelques globaux:
Puis modifiez l'instruction switch de l'original à ceci:
Vous voudrez peut-être ajuster les «clics» à vos goûts. Fondamentalement, il suffit de regarder un «touchstart» suivi rapidement d'un «touchend» pour simuler un clic.
la source
click
fonctionne parfois et parfois pas ???Merci pour les codes ci-dessus! - J'ai essayé plusieurs options et c'était le ticket. J'ai eu des problèmes en ce que preventDefault empêchait le défilement sur l'ipad - je teste maintenant des éléments déplaçables et cela fonctionne très bien jusqu'à présent.
la source
J'avais la même solution que gregpress answer , mais mes éléments déplaçables utilisaient une classe au lieu d'un identifiant. Cela semble fonctionner.
la source
Vieux fil je sais .......
Le problème avec la réponse de @ryuutatsuo est qu'il bloque également toute entrée ou autre élément qui doit réagir aux «clics» (par exemple les entrées), j'ai donc écrit cette solution. Cette solution a rendu possible l'utilisation de n'importe quelle bibliothèque de glisser-déposer existante basée sur des événements mousedown, mousemove et mouseup sur n'importe quel appareil tactile (ou cumputer). C'est également une solution multi-navigateurs.
J'ai testé sur plusieurs appareils et cela fonctionne rapidement (en combinaison avec la fonction glisser-déposer de ThreeDubMedia (voir aussi http://threedubmedia.com/code/event/drag )). C'est une solution jQuery donc vous ne pouvez l'utiliser qu'avec les bibliothèques jQuery. J'ai utilisé jQuery 1.5.1 pour cela car certaines fonctions plus récentes ne fonctionnent pas correctement avec IE9 et les versions ultérieures (non testées avec les nouvelles versions de jQuery).
Avant d'ajouter une opération de glisser-déposer à un événement, vous devez d'abord appeler cette fonction :
Vous pouvez également bloquer tous les composants / enfants pour l'entrée ou pour accélérer la gestion des événements en utilisant la syntaxe suivante:
Voici le code que j'ai écrit. J'ai utilisé de belles astuces pour accélérer l'évaluation des choses (voir code).
Ce qu'il fait: Dans un premier temps, il convertit les événements d'une seule touche en événements de souris. Il vérifie si un événement est causé par un élément sur / dans l'élément qui doit être déplacé. S'il s'agit d'un élément d'entrée comme input, textarea, etc., il ignore la traduction, ou si un événement de souris standard lui est attaché, il sautera également une traduction.
Résultat: chaque élément d'un élément déplaçable fonctionne toujours.
Bon codage, greetz, Erwin Haantjes
la source
simulateTouchEvents(<object>, true);
???touch
événementschrome
, je ne peux pas faire défiler le tableau. Pas même sur mobile.