2011-09-09 84 views
2

我已经成功插入了datepicker到我的网页,它现在工作顺利。我需要做的是,在从语言选择器中更改语言之后,datepicker必须反映这一点,并显示选定的语言文本。如何根据所选语言更改日期选择器语言。

我有下面的代码,我无法设法到目前为止,因为我不知道jquery很好。希望给别人反馈

<head> 
<script type="text/javascript" src="/scripts/datepicker.core.js"></script> 
<script type="text/javascript" src="/scripts/datepicker.jquery.ui.min.js"></script> 
<script type="text/javascript" src="/scripts/jquery.ui.datepicker-tr.js"></script> 
<script type="text/javascript" src="/scripts/jquery.ui.datepicker-en-GB.js"></script> 
</head> 
<body> 
    <div id="LanguageSelector"> 
       <form method="get" action="/"><select id="LanguageDropDownList" name="lang" onchange="javascript:location='/?lang=' + this.options[this.selectedIndex].value" ><option value="en" selected="selected" >English (en)</option><option value="tr">Türkçe (tr)</option></select><noscript><input type="submit" value=">"></noscript></form> 
    </div> 

     <div class="calendar" id="datepicker"></div> 

     <script type="text/javascript"> 
      var initialCalendar = true; 
      $(function() { 
       $.datepicker.setDefaults($.datepicker.regional[ ' ' ]); 
       var eventDays = [<%=dateOfEvent%>]; 
       $('#datepicker').datepicker($.datepicker.regional[ 'tr' ], 
       {   
        inline: true, 
        dateFormat: 'yy-mm-dd', 
        changeMonth: true, 
        changeYear: true, 
        onSelect: function(date) { 
         if(!initialCalendar){ 
          for(var i in eventDays){ 
           if(eventDays[i].Date == date){ 
            window.location = eventDays[i].Url; 
           } 
          } 
         }else{ 
          initialCalendar = false; 
         } 
        }, 
        beforeShowDay: function(thedate) { 
         thedate = thedate.format("yyyy-MM-dd"); 
         for(var i in eventDays){ 
          if(eventDays[i].Date == thedate){ 
           return [true,""]; 
          } 
         } 
         return [false, ""]; 
        } 
       }); 

       $('#LanguageDropDownList').change(function() { 
        $('#datepicker').datepicker("option", 
         $.datepicker.regional[ $(this).val() ]); 
       }); 
      }); 

      Date.prototype.format = function(format) 
      { 
       var o = { 
       "M+" : this.getMonth()+1, 
       "d+" : this.getDate(), 
       "h+" : this.getHours(), 
       "m+" : this.getMinutes(), 
       "s+" : this.getSeconds(), 
       "q+" : Math.floor((this.getMonth()+3)/3), 
       "S" : this.getMilliseconds() 
       } 
       if(/(y+)/.test(format)) format=format.replace(RegExp.$1, 
       (this.getFullYear()+"").substr(4 - RegExp.$1.length)); 
       for(var k in o)if(new RegExp("("+ k +")").test(format)) 
       format = format.replace(RegExp.$1, 
        RegExp.$1.length==1 ? o[k] : 
       ("00"+ o[k]).substr((""+ o[k]).length)); 
       return format; 
      } 
     </script> 
</body> 
+0

从我所看到的看起来很好。你还需要发布你的html。你也可以在jsfiddle中创建一些东西,看看它是否仍然不起作用。 – Matt

+0

需要了解更多:) –

+0

原始帖子已更新 – user574712

回答

0

这似乎是工作的罚款,以及:http://jsfiddle.net/repw4/936/

如果仍然不能为你工作,试图摧毁的日期选择器并重新启动它:

$('#LanguageDropDownList').change(function() { 
    $('#date').datepicker('destroy') 
     .datepicker($.datepicker.regional[$(this).val()]); 
}); 

看到它在行动:http://jsfiddle.net/repw4/936/

+0

Datepicker的作品。我只需要datepicker反映在LanguageDropDownList中更改,所以每次我从语言选择器更改语言时,都必须设置正确的语言 – user574712

+0

,请参阅最新的答案。 –

+0

谢谢,它现在的作品:) – user574712

0

调用“摧毁”可以删除一些事件如果有的话。尝试首先调用'refresh'方法,它会重绘:

$('#date').datepicker('refresh')