2011-09-09 82 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')