0

我有一个物品清单。
当我单击这些项目中的任何一个时,我会将其-value复制id到 form text-field 中。
每次单击时,它都会替换该值,默认情况下是正确的。但是我想补充的是,用户可以按住键盘上的一个键,然后当他们点击时,他们.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

4 回答 4

2
$('ul#filter-results').on('click', 'li', function(e) {
  if(e.shiftKey) {
    do something;
  } else {
    do something else;
  }
});
于 2012-07-13T10:41:14.753 回答
2

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

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

演示

于 2012-07-13T10:51:13.197 回答
1

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

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

ExtendedClick 插件

希望这可以帮助。

于 2012-07-13T10:32:39.393 回答
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();

    });
});

谢谢你的好建议...

于 2012-07-13T12:25:14.417 回答