0

アイテムのリストがあります。
これらの項目のいずれかをクリックすると、その値がフォームフィールドにコピーされます。 クリックするたびに、デフォルトで正しい値が置き換えられます。しかし、私が追加したいのは、ユーザーがキーボードのキーを押したままにし、クリックすると、同じフォームフィールドをクリックしただけの方法です。idtext
.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

shiftKeyはイベントオブジェクトのプロパティの1つであり、使用するのに有効です。これを試して:

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

デモ

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

拡張クリック用の jQuery プラグインがあります。

それを試すか、彼らがどのようにそれを行ったかを見て、自分で実装することができます.

ExtendedClick プラグイン

お役に立てれば。

于 2012-07-13T10:32:39.393 に答える
0

これが私が最終的に得たものです。クリックしたときに多くのテキストをマークしたため、
に切り替えました。 見栄えが悪い以外に何もしていない...altKeyshiftKey

$(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 に答える