2016-11-01 14 views
0

私はブートストラップのdatepickerを持っています。私は入力ボックスが最初にクリックされたときにshowイベントを発生させたい。しかし、ユーザーが前の矢印と次の矢印で月を移動している場合は、イベントを発生させたくありません。datepickerのときにshowイベントが発生しないようにします

これは可能ですか?

$('#sandbox-container input').datepicker({ 
    autoclose: true 
}); 

$('#sandbox-container input').on('show', function(e){ 
    console.log('show event'); 
}); 

フィディドを実行すると、入力フィールドを最初にクリックしたときにメッセージが表示されます(その動作が必要です)。ただし、前の矢印と次の矢印を使用すると、そのメッセージが表示されます。

JSフィドラーはここにある - あなたがshowはすでに現在の「状態」に「実行する」かどうかを確認する必要がありますhttp://jsfiddle.net/LcqM7/611/

答えて

1

$('#sandbox-container input') 
    .on('show', function(e){ 
     if (! $(this).data('showrun')) { 
      console.log('show event'); 
      $(this).data('showrun', true); 
     } 
    }) 
    .on('hide', function(e){ 
     $(this).data('showrun', false); 
    }) 
    .on('changeMonth', function(e){ 
     console.log('change month event'); 
    }); 

と作業例:
http://jsfiddle.net/k6b3yepb/

+0

完璧これは私がまさに必要である - 乾杯:) –

0

それは少し厳しいですが、あなたはshowその後jqueries oneを使用して、それを再接続バインド解除するhideイベントを活用することができます。

http://jsfiddle.net/5dhkumko/

$('#sandbox-container input').datepicker({ 
    autoclose: true 
}); 

$('#sandbox-container input').one('show', showMethod); 

$('#sandbox-container input').on('hide', function(e) { 
    $('#sandbox-container input').off('show', showMethod).one('show', showMethod); 
}); 

function showMethod() { 
    console.log('show event'); 
} 
関連する問題