单击以替换值,按住Shift并单击以使用jquery追加值

我有一个包含物品的清单。
当我单击这些项目中的任何一项时,我id value 复制到表单text -field中。
每次我点击它,它都会替换值,默认情况下这是正确的。 但是我想补充的是,用户可以在键盘上按住某个键,然后当他们点击时,他们只是将他们刚刚点击的内容放到相同的表单字段中。

这是我用于第一个/默认场景的jQuery代码:

 $(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 trigger the search and $('input#search').focus(); // make sure the field is focused so the user can start typing immediately }); }); 

有没有办法实现某种键盘键监听器?
就像是:

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

还没有试过看看shiftKey在这里是否有任何有效名称

shiftKey是事件对象的属性之一,可以使用。 试试这个:

 $(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; } }); 

有一个用于扩展点击的jQuery插件。

您可以尝试或者看看他们是如何做到的并自己实现它。

ExtendedClick插件

希望这可以帮助。

这就是我最终的结果:
我切换到altKey因为我点击时shiftKey标记了很多文字。
没有做任何事情除了看起来不太好……

 $(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(); }); }); 

谢谢你的好建议……