2013-09-24 17 views
5

誰かがdatepickerのonselectイベントをどのようにトリガーするのですか?私のコードは正常に動作しています(datepickers altfieldの値に基づいてデータベースからいくつかのデータを取得しています)が、ページがロードされると現在の日付でonselectイベントが発生せず、何も表示されません。私は手動でそれをしたいと思います。手動でdatepickerのonselectイベントを起動する

<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

試してみます').click(); ' – rps

答えて

15

日付のセットの直後に、日付ピッカーのclickをトリガーすることができます。

コード:

$(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/私はdatepicker.jsファイルのソースコードからこれを取っ

+1

マジックトリックhehe、ありがとう! – Daria

0

thisは、入力要素(jqueryオブジェクトではなく、実際のDOM要素)で置き換える必要があります。私の場合、私はkeydownイベントからこれを呼んでいました。 `` body`であなたの日付ピッカーのためonload`機能や `$(ドキュメント).ready()` `$( '#の日付ピッカー使用をクリックしてイベントをトリガ

// 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のdatePickerモジュールの内部 "隠された"関数の使用を良いソリューションにすることは考えていません。 –

関連する問題