2016-05-04 15 views
2

クロムでチェックボックスの入力をクリックすると、クリックイベントがトリガされ、その後で変更イベントが発生しますが、IEでは逆です。IEでクリックする前にトリガされたイベントを変更する

クロム、FFおよびIEについてはjsfiddleをご覧ください。

 $("#checkbox").on('click', 
     function() { 
      console.log("click"); 
     }    
    ); 

    $("#checkbox").on('change', 
     function() { 
      console.log("change"); 
     }    
    ); 

私の質問は、IEがchromeとFFと同じように動作するようにすることです。

+2

あなたは両方が必要なのですか、なぜ私の質問はありますか? 'checkboxes' /' radio'の場合、 'change'は別のオプションがチェック/チェックされていないときに機能します。 「クリック」は、チェックボックス/ラジオをクリックするだけです。両方の本当の必要はありません – imvain2

+4

おそらく 'クリック'を 'mousedown'または 'mouseup'に変更します。 – tpdietz

+0

はIE 8でテストされています。 –

答えて

1

これはイベントの順序の正しい方法です。クリックイベントは、クライアントが心を変えたときにキャンセルできるように、最後のイベントを発生させる必要があります。 clickが完了する前にmouseupイベントが発生するため、mouseupイベントを使用してブラウザ間でイコライズすることができます。

checkbox.onchange = function() { 
 
       console.log("change"); 
 
      } 
 

 
checkbox.onmouseup = function() { 
 
       console.log("click"); 
 
      }
<input id="checkbox" type="checkbox" >​

関連する問題