2016-10-28 17 views
3

イベントに密接に関連したJavascriptスクリプトを作成しています。私は 'フォーカス'イベントに関するいくつかの指示と、 '選択'イベントに関するいくつかの異なる指示を実行しなければならない。 私の驚いたことに、プログラムでフォーカスを当てると、「選択」イベントも発生することがわかります!それは大きな問題です。 なぜこのようなことが起こっているのか、プログラマチックに選択イベントをブロックすることができますか?入力にフォーカスすると、 'focus'と 'select'イベントの両方が発生します。

次の例を参照してください。 「フォーカスを当てる」ボタンをクリックすると、コンソールは「あなたが何かを選んだ」と書いてくれます!

<!DOCTYPE html> 
 
    <html lang="en"> 
 
    <head> 
 
     <meta charset="utf-8"> 
 
     <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script> 
 
    </head> 
 
    <body> 
 

 
     <input id="field" type="text" /> 
 
     <a href="#" id="btn">Give focus</a> 
 

 
    <script> 
 
     $(document).ready(function() { 
 
      $('#field').on('select', function(e) { 
 
       console.log('You selected something'); 
 
      }); 
 
      $('#btn').on('click', function(e) { 
 
       $('#field').focus(); 
 
      }) 
 
     }); 
 
    </script> 
 

 
    </body> 
 
    </html>

+1

は、私が思う、両方のイベントは、 '、SELECT'または'クリック作業と同じです'。 'focus()'を起動すると自動的に 'select'イベントが発生します。私は2つのイベントの必要はないと思います。ちょうど 'クリック 'だけで十分だと思います。 – Samir

+0

それはポイントではないです。 2つの異なるイベントで2つの異なるリスナーが必要です。私は "選択"イベントeで何かを "クリック"イベントで何か別のものを行う必要があります。だから私はそれらの両方が必要です。問題は、2つのイベントを混乱させてしまうことです。 – user2029958

+0

異なる目的のために2つの異なるイベントが必要であると考えてみましょう。しかし、入力フィールドを選択するには、それをクリックする必要があります。したがって、 'select'と' click'を同時に2つのイベントで起動します。これは私の理解です。 – Samir

答えて

0

これを試していただきありがとうございます:

$(document).ready(function() { 
 
     $('#field').on('select', function(e) { 
 
      console.log('You selected something'); 
 
     }); 
 
     $('#btn').click(function(e) { 
 
     
 
      $('#field').focus(); 
 
     }) 
 
    });
<input id="field" type="text" /> 
 
    <a href="#" id="btn">Give focus</a> 
 
    <script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>

+0

これは何も変わりません – user2029958

関連する問題