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

时间:2012-07-13 10:25:54

标签: keyboard click append jquery

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

这是我用于第一个/默认场景的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是否为任何有效名称

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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

DEMO

答案 2 :(得分:1)

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

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

ExtendedClick plugin

希望这有帮助。

答案 3 :(得分:0)

这就是我最终的结果:
我切换到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();

    });
});

感谢您提出好的建议......