2016-11-01 3 views
0

У меня есть bootstrap datepicker. Я хочу, чтобы событие show было запущено при первом щелчке окна ввода. Однако я не хочу, чтобы событие было запущено, если пользователь просматривает месяцы с предыдущей и следующей стрелками.предотвратить шоу событие от стрельбы, когда на datepicker

Возможно ли это?

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

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

Если вы запустите скрипку вы увидите сообщение нужно регистрироваться при первом нажатии на поле ввода (я хочу это поведение). однако вы также увидите это сообщение, если вы используете предыдущие и следующие стрелки.

JS Скрипач здесь - http://jsfiddle.net/LcqM7/611/

ответ

1

Вам нужно будет проверить, если show уже «запустить» в текущем «состоянии».

$('#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

Это немного мрачным, но вы можете использовать в hide событие отвязать show затем приклеить ее с помощью jqueries one.

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'); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^