2013-09-24 6 views
5

Может ли кто-нибудь сказать мне, как вы запускаете событие onselect datepicker? Мой код работает хорошо (потянув некоторые данные из базы данных на основе значения datepickers altfield), но при загрузке страницы он не вызывает событие onselect в текущую дату и ничего не отображает; поэтому я хотел бы сделать это вручную.Пожарать datepicker onselect event вручную

<script> 
    $("#datepicker").datepicker 
    (
    { 
      altField: '#sheet', 
      onSelect: function load() { 
      $(document).ready(function() { 
        $.ajax({ 
        type: 'POST', 
        url: 'test.php', 
        data: {sheetid: $('#sheet').val()}, 
        success: function(data) 
        { 
         $("#content").html(data); 
        } 
       }); 

     }); 
     }, 
      firstDay: 1}); 
    </script> 
+1

попытка запуска событие щелчка для вашего DatePicker в '' body' onload' функции или '$ (документ) .ready()' 'с помощью $ ('# DatePicker ') .click(); ' – rps

ответ

15

Вы можете вызвать click на DatePicker сразу после набора даты.

Код:

$(document).ready(function() { 
    $("#datepicker").datepicker({ 
     altField: '#sheet', 
     onSelect: function(date) { 
      alert(date); 
     }, 
     firstDay: 1 
    }); 

    $('#datepicker').datepicker("setDate", new Date(2013,09,22)); 
    $('.ui-datepicker-current-day').click(); // rapresent the current selected day 

}); 

Демо: http://jsfiddle.net/IrvinDominin/DynuW/

+1

Волшебный трюк хе-хе, спасибо! – Daria

0

Я взял это из исходного кода файла datepicker.js. Обратите внимание, что следует заменить на ваш входной элемент (не объект jquery, фактический элемент dom). В моем случае я вызывал это из события keydown.

// this is SUCH a hack. We need to call onselect to call any 
// specific validation on this input. I stole this from the datepicker source code. 
var inst = $.datepicker._getInst(this), 
onSelect = $.datepicker._get(inst, "onSelect"); 
if (onSelect) { 
    dateStr = $.datepicker._formatDate(inst); 
    onSelect.apply((inst.input ? inst.input[0] : null), [dateStr, inst]); 
} 
0

Лучшее решение

var inst = $.datepicker._getInst($("#date")[0]); 
$.datepicker._get(inst, 'onSelect').apply(inst.input[0], [$("#date").datepicker('getDate'), inst]); 
+0

Не могли бы вы объяснить, почему это «лучшее решение» или, по крайней мере, как это работает? Я бы не стал рассматривать использование внутренних «скрытых» функций модуля датпикера jQuery как хорошее решение, не говоря уже о «наилучшем». –

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