How to add a custom class to my JQuery UI Datepicker

前端 未结 4 1929
鱼传尺愫
鱼传尺愫 2020-12-10 11:24

I have several inputs which trigger JQuery UI datepickers e.g.





        
相关标签:
4条回答
  • 2020-12-10 11:53

    I would simple set an attribute and use it instead of the class. in this case you dont need to remove anything because it will be overridden

    $('input').datepicker({
       beforeShow: function(input, inst) {
           $('#ui-datepicker-div').attr("inputId",this.id);
       }
    });
    

    the to affect in JQ

    $('#ui-datepicker-div[inputId=your_ID_here]')
    

    in CSS

    #ui-datepicker-div[inputId=your_ID_here]{}
    
    0 讨论(0)
  • 2020-12-10 11:55

    Jquery UI custom download allows you to add a custom prefix to your theme, say you added a prefix ".datepicker_wrapper" you can add this class to your datepicker this way :

     $('.datepicker').datepicker({
          beforeShow : function(){
               if(!$('.datepicker_wrapper').length){
                    $('#ui-datepicker-div').wrap('<span class="datepicker_wrapper"></span>');
               }
          }
     });
    
    0 讨论(0)
  • 2020-12-10 12:04

    beforeShow can be used to manipulate the class before showing the datepicker.

    $('input').datepicker({
       beforeShow: function(input, inst) {
           $('#ui-datepicker-div').removeClass(function() {
               return $('input').get(0).id; 
           });
           $('#ui-datepicker-div').addClass(this.id);
       }
    });
    

    Demo (using jQuery 1.6.2 but needs jQuery > v1.4 for the .removeClass() which takes a function)

    Note This works by removing all the classes (i.e. <input> ids) with a **general $('input') selector which you might want to limit to just pick up the <input> elements that have been modified into date pickers.

    Edit Just had an upvote for this and looking at the code, it did not seem to do what I explained it should (maybe I misunderstood the question!). So, here is a version which adds a class equal to the id of the <input> clicked on to the datepicker. Also uses the original .removeClass() so this will work with jQuery > v1.2.

    var inputIds = $('input').map(function() {
        return this.id;
    }).get().join(' '); // space separated ready for removeClass
    
    $('input').datepicker({
       beforeShow: function(input, inst) {
           $('#ui-datepicker-div').removeClass(inputIds);
           $('#ui-datepicker-div').addClass(this.id);
       }
    });​
    
    0 讨论(0)
  • 2020-12-10 12:04

    You can try this to add css Classes for multiple datepicker.

    But remeber jQuery UI - v1.9.1 is not up-to-date last version is from 2012-10-25

    HTML:

    <input type="text" id="datepicker1" name='date1'/>
    <input type="text" id="datepicker2" name='date2'/>
    

    Jquery:

    $('#datepicker1').datepicker( {
        changeMonth: false,
        changeYear: true,
        showButtonPanel: true,
        dateFormat: 'yy',
        showAnim: '',
        beforeShow: function( input, inst){
          $(inst.dpDiv).addClass('just-yaer');
        },
        onClose: function(dateText, inst) { 
            var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
            $(this).datepicker('setDate', new Date(year, 1));
            $(inst.dpDiv).removeClass('just-yaer');
        }
    });
    
    $('#datepicker2').datepicker( {
        changeMonth: true,
        changeYear: false,
        showButtonPanel: true,
        dateFormat: 'MM',
        showAnim: '',
        beforeShow: function( input, inst){
          $(inst.dpDiv).addClass('just-month');
        },
        onClose: function(dateText, inst) { 
            var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
            $(this).datepicker('setDate', new Date(month, 1));
            $(inst.dpDiv).removeClass('just-month');
        }
    });
    

    CSS:

    .just-yaer .ui-datepicker-prev,
    .just-yaer .ui-datepicker-next,
    .just-yaer .ui-datepicker-month,
    .just-yaer .ui-datepicker-calendar {
        display: none;
    }
    
    .just-month .ui-datepicker-prev,
    .just-month .ui-datepicker-next,
    .just-month .ui-datepicker-year,
    .just-month .ui-datepicker-calendar {
       display: none;
    }
    

    Working fiddle:

    http://jsfiddle.net/g6mnofu2/27/

    0 讨论(0)
提交回复
热议问题