WdatePicker 动态设置

预想设计了三个下拉选框,根据三个选框的内容,查询数据库时间,然后点击时间控件的时候,把符合条件的日期高亮显示,已经实现这个功能,但是有个问题只有在第一次点击时间控件的时候,才能正确显示,切换了列表框,就不显示新查询的效果了,如何破解这个问题,上代码:
function loadwdate1() { //设置时间控件格式
var timetype = $('#timetypeSelect option:selected').val();
document.getElementById("subjectSelect").value
var product=document.getElementById("subjectSelect").value;
var datatypeid=document.getElementById("datatypeidSelect").value;
var graphicstype=document.getElementById("graphicstypeSelect").value;
var showDates=new Array();
switch (timetype) {
case '0': //日
{

            //获取该流程的信息
            $.post("/system/imageShow.do",{"action":"getPicDatesJson", "graphicstype":graphicstype,"datatypeid":datatypeid}, function(json) {                 
                        for (var i = 0; i < json.length; i++) { 
                              showDates[i]=json[i].key;
                        }
                    }, 'json'); 
            //alert(showDates);
            WdatePicker({dateFmt:'yyyy年MM月dd日',
                maxDate:'%y-%M-%d',
                specialDates:showDates});
        }
    其实我就是每次加载时间控件的时候,去后台查询,把结果返回到json,然后赋值给showDates这个数值,但是下次切换就没有任何效果了,我设想是每次把控件刷新一次,没查询到相关的方法,求大神指教。

ajax 异步导致的,将ajax设置成非异步请求,非异步并将设置函数放在ajax外

能做到动态切换日期格式吗,比如我默认是WdatePicker({dateFmt:'yyyy年MM月dd日',
maxDate:'%y-%M-%d',
specialDates:showDates});,然后根据参数改成

                            WdatePicker({dateFmt:'yyyy',
            maxDate:'%y-%M-%d',
            specialDates:showDates});