2

私はこの次のコードを試しています。shキーを押すたびに入力の属性を1に変更し、shift離すと0に戻ることになっています。

<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">
</script>
<script>
$(document).ready(function(){
 $(document).on("keyup","body",function(e) {
   if (e.which == 16) {
     $("input").attr("sh","0");
   }
 });

$(document).on("keydown","body",function(e) {
  if (e.which == 16) {
     $("input").attr("sh","1");
   }
 });
});
</script>
</head>
<body>
<input type = 'text' sh = '0'/>
<p>Just checking</p>
</body>
</html>

この一連のイベントが実行される場合を除いて、正常に機能します。入力にフォーカスがないときにShiftキーを押します。(Firebugはsh予想通り1になることを示しています)。キーを押したまま、入力に焦点を合わせます。次に、入力を右クリックします。コンテキストメニューがポップアップします。ここで、shiftキーを離すと(コンテキストメニューをそのままにしておく)、Firebugはそれshがまだ1であることを示します。コンテキストメニューの外側をクリックして移動するかpaste、クリップボードのテキストを入力に貼り付けるオプションをクリックしても、 sh1のままです。もう一度押して放すshiftと、sh再び0になります。

これを修正する方法はありますか?

4

1 に答える 1