2014-10-10 2 views
0

Я хотел бы обратить внимание на некоторые пользовательские даты: это то, что я до сих порВыделите пользовательские даты

if (jQuery('.datepicker').length) { 
     jQuery('.datepicker').each(function (i) { 
      var $item = jQuery(this); 
      var fechas = $item.data('fechas');    
      var options = { 
       'display' : $item.data('display') == '' ? '' : $item.data('display'), 
       beforeShowDay: function(date) { 
        console.log(date); 
        if (fechas.length) { 
         for(var i = 0; i < fechas.length; i++) { 
          if (fechas[i] == date) { 
           return [true, 'css-class-to-highlight', 'tooltipText']; 
          } 
         } 
        } 
       } 
      } 
      $item.datepicker(options); 
     }); 
    } 

Но потом я получил эту ошибку

Uncaught TypeError: Cannot read property '0' of undefined 

http://jsfiddle.net/34jLb8o3/2/

в вещь, я хочу выделить эти даты, независимо от текущей даты, я видел ответы, такие как this one, но я не думаю, что они применимы здесь, не так ли?

ответ

0

это, кажется, работает лучше: http://jsfiddle.net/34jLb8o3/8/

jQuery(function(){ 
    jQuery('.datepicker').each(function (i) { 
       var $item = jQuery(this); 
       var fechas = $item.data('fechas');    
       var options = { 
        'dateFormat' : 'dd/mm/yy', 
        'display' : $item.data('display') == '' ? '' : $item.data('display'), 
        beforeShowDay: function(date) { 
         if (fechas.length) { 
          var datestr = [ date.getDate(), date.getMonth()+1, date.getFullYear()]; 
          datestr = datestr.join('/'); 
          console.log(datestr); 
          if ($.inArray(datestr, fechas) != -1) {          
           return [true, 'css-class-to-highlight', 'tooltipText']; 
          } else { 
           return [false, 'css-normal-class', 'no-highlight']; 
          } 
         } 
        } 
       } 
       $item.datepicker(options); 
      }); 
}); 
+0

Привет, Спасибо за ваш ответ, я приспособил свой код, чтобы один в вашей ansewr, но мне дает ошибка, любые мысли? –

+0

изменить dmy ответить – DarkMukke

+0

Собственно, это видно; Я могу зарегистрировать каждый 'fechas [i]' –

0

Вот заявление, запрос, чтобы выделить дату 2-го октября 2014

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>  
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.1/jquery-ui.min.js"></script> 
    <style> 
     .ui-state-highlight { 
     background: red !important;  
    } 

    </style> 
    <script type="text/javascript"> 
     $(function() { 
      $("#date").datepicker(); 
      $("#date").bind('click', function() { highLightDate(2014, 9, 31); }); 

     }) 

     function highLightDate (_year,_month,_day){ 
      $('[data-year=' + _year + '][data-month=' + _month + '] > a:contains(' + _day + ')') 
       .filter(function (index) {     
        return $(this).text() == _day; 
       }) 
       .addClass('ui-state-highlight'); 
     } 
    </script> 

</head> 
<body> 
    <input type="text" width="100" id="date" /> 
</body> 
</html> 

Попробуйте этот код, его полностью работает на моем конце. Надеюсь, это решает вашу проблему.

+0

Так что из-за пункта 2. Я не могу использовать это решение .... спасибо! –

+0

Проверьте отредактированный ответ. Вы можете использовать его сейчас очень мирно. – Abhishek

+0

Позвольте мне посмотреть;) –

0

Вы можете использовать beforeShowDay, возвращая массив в соответствии с docs

http://jsbin.com/borum/2/edit?js,output

$(function() { 
    var dates = ["10/10/2014","12/10/2014","13/10/2014"];    
    var options = { 
     dateFormat : 'dd/mm/yy', 
     beforeShowDay: function(date) { 
     formattedDate = $.datepicker.formatDate('dd/mm/yy', date); 
     if(dates.indexOf(formattedDate) === -1){ 
      return [false]; 
     } 
     else{ 
      return [true]; 
     } 
     } 
    }; 
    $("#datepicker").datepicker(options); 

}); 
Смежные вопросы