クリックイベントハンドラーを複数回バインドしているようです$('#myDiv #myInput')。
$('#myDiv #myInput').click(function(e){のクリックハンドラの外側に移動するか、を$("#myDiv").click(function(e) {使用する必要があります.one(。どちらの場合も動作が異なることに注意してください。
また、 event.stopPropagation();を使用する必要があります。イベントのバブリングを停止します。
要件に応じて、以下のコードを試してください。以下の項目1.と2.は動作が異なるため、コードを理解し、要件に従って実装してください。
#myInputクリックイベントを外部に移動する
$("#myDiv").click(function(e) {
e.preventDefault();
e.stopPropagation();
console.log('open');
});
// submit the form
$('#myDiv #myInput').click(function(e){
e.preventDefault();
e.stopPropagation();
/* ajax call here */
console.log('clicked');
});
#myInputのクリックハンドラーは1回実行されることに注意してください。
$("#myDiv").click(function(e) {
e.preventDefault();
e.stopPropagation();
console.log('open');
// submit the form
$('#myDiv #myInput').one(function(e){
e.preventDefault();
e.stopPropagation();
/* ajax call here */
console.log('clicked');
});
});