2017-11-27 16 views
0

変更イベントを発生させたイベントをchangeイベント関数に渡す方法はありますか?私は基本的にラジオボタンをプログラムでクリックするメソッドを持っています。これはchange関数を呼び出すので、元のクリックが人間によって行われたのか、プログラムによって完了したのかを知る必要があります。jqueryで変更イベントが発生したイベントを取得する

// This will trigger a change event on both input names menu1 and menu2. 
$("#menu1").on("click", function() { 
    $("#menu2A").click(); 
}); 

$("input [name='menu1'], input [name='menu2']").on("change", function(e) { 
    var inputName = $($(e)[0].target).attr("name"); 
    if (inputName === "menu2") { 
     // This is where I want to check that the click event was initiated by a human. 
    } 
}); 

私は、クリックイベントをチェックするためにe.preventDefault()を呼び出しますが、それは動作しませんでした$("input[name='menu2'].on("click", function...)を作成してみました。それはクリック機能を打つ前に変更機能に当たった。これは、私がchangeイベント関数内でクリックイベントをチェックする必要があると思った理由です。

+0

(その後0にeventstoreを設定することを忘れないでください)をテスト? –

+0

トリガされたイベント名と要素イベントが同じ場合は簡単です。あなたが達成しようとしていることは本当に明確ではありません。 [mcve] – charlietfl

+0

にイベントオブジェクト(あなたの場合は 'e')を入れてjqueryオブジェクトに入れることはできません。多分あなたは '$(e.target)[0]' – Sysix

答えて

0

私はあなたの最終目標を理解するのに十分なコンテキストを持っていないが、menu1をクリックしたときにmenu2のchangeイベントがトリガされていないことを好む場合は、あなたが選択するmenu2を設定している方法を変更することができます。

// This will trigger a change event on input name menu1 only, NOT menu2 
 
$("#menu1").click(function() { 
 
    $("#menu2").prop("checked", true); 
 
}); 
 

 

 
$("input[name=menu1], input[name=menu2]").change(function(e) { 
 
    var inputName = $(this).attr("name"); 
 
    console.log(inputName); 
 
}); 
 

 
$("#clear").click(function() { 
 
    $("input[name=menu1], input[name=menu2]").each(function() { 
 
    $(this).prop("checked", false); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type='radio' id="menu1" name="menu1">Menu 1 
 
<input type='radio' id="menu2" name="menu2">Menu 2 
 
<button id='clear'>Clear</button>

+0

@LBeckerがこれをやっているのですか? – emshore

0

私は気づいていても良く、ここで答えるevent.originalEventオブジェクト使用: https://stackoverflow.com/a/6692173/2802014

を0

これは試しましたか?もしeventstoreは= '人間のあなたの「変更オン」の内部

var eventstore; 
$("#menu2A").on('focus blur',function(e){ 
if(e.which){ 
    eventstore='human'; 
} 
}); 

あなたはあなたのクリックイベントがあなたの変更イベントを呼び出す方法

関連する問題