cliquez pour remplacer la valeur, shift + cliquez pour append la valeur à l’aide de jquery

J’ai une liste avec des articles.
Lorsque je clique sur l’un de ces éléments, je copie sa valeur id dans un champ de text formulaire.
Chaque fois que je clique, il remplace la valeur, qui est correcte par défaut. Mais ce que je voudrais append, c’est un moyen pour l’utilisateur de maintenir une touche de son clavier enfoncée et, lorsqu’ils cliquent, ils .append ce qu’ils viennent de cliquer dans le même champ de formulaire.

Voici mon code jQuery que j’utilise pour le premier scénario / défaut:

 $(function(){ $('ul#filter-results li').click(function(){ var from = $(this).attr('id'); // get the list ID and $('input#search').val(from+' ').keyup(); // insert into text-field then sortinggger the search and $('input#search').focus(); // make sure the field is focused so the user can start typing immediately }); }); 

Y a-t-il un moyen d’implémenter une sorte de clavier-auditeur?
Quelque chose comme:

 if (e.shiftKey){ .append('this text instead') } 

n’a pas essayé de voir si shiftKey est même un nom valide ici

shiftKey est l’une des propriétés de l’object événement et est valide pour être utilisé. essaye ça:

 $(document).on('keyup click', function(e){ if (e.shiftKey) { $('input#search').focus() $('input#search').val(e.target.id) } }) 

DEMO

 $('ul#filter-results').on('click', 'li', function(e) { if(e.shiftKey) { do something; } else { do something else; } }); 

Il existe un plugin jQuery pour un clic prolongé.

Vous pouvez essayer ou voir comment ils l’ont fait et l’appliquer vous-même.

ExtendedClick plugin

J’espère que cela t’aides.

C’est ce que j’ai fini avec:
Je suis passé à altKey parce que shiftKey marqué beaucoup de texte lorsque j’ai cliqué.
N’a rien fait d’autre que ça n’a pas l’air bien …

 $(function(){ $('ul#filter-results li').click(function(e){ var text = $(this).attr('id'); // get the ID var input = $('#search'); // form field to insert text into if (e.altKey){ input.val(input.val()+', '+text+' ').keyup(); } // fetch whatever is already there, and add some more else { input.val(text+' ').keyup(); } // just replace whatever is already there $('#search').focus(); }); }); 

Merci pour vos bonnes suggestions …