单击以替换值,按住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(); }); });
谢谢你的好建议……