Как добавить кнопки в средство выбора даты jQuery на панели кнопок? - PullRequest
24 голосов
/ 05 января 2011

Просто добавить элемент в оболочку панели и вызвать .button ()?

Ответы [ 7 ]

44 голосов
/ 10 ноября 2011

Если вы хотите удерживать кнопку «очистить» при прокрутке месяцев, используйте onChangeMonthYear:.

Пример:

$( "#datepicker" ).datepicker({
    showButtonPanel: true,
    beforeShow: function( input ) {
        setTimeout(function() {
            var buttonPane = $( input )
                .datepicker( "widget" )
                .find( ".ui-datepicker-buttonpane" );

            $( "<button>", {
                text: "Clear",
                click: function() {
                //Code to clear your date field (text box, read only field etc.) I had to remove the line below and add custom code here
                    $.datepicker._clearDate( input );
                }
            }).appendTo( buttonPane ).addClass("ui-datepicker-clear ui-state-default ui-priority-primary ui-corner-all");
        }, 1 );
    },
    onChangeMonthYear: function( year, month, instance ) {
        setTimeout(function() {
            var buttonPane = $( instance )
                .datepicker( "widget" )
                .find( ".ui-datepicker-buttonpane" );

            $( "<button>", {
                text: "Clear",
                click: function() {
                //Code to clear your date field (text box, read only field etc.) I had to remove the line below and add custom code here
                    $.datepicker._clearDate( instance.input );
                }
            }).appendTo( buttonPane ).addClass("ui-datepicker-clear ui-state-default ui-priority-primary ui-corner-all");
        }, 1 );
    }
});
10 голосов
/ 18 апреля 2013

Следующий код позволит вам добавить еще одну кнопку в указатель даты jQuery UI.Можно добавить несколько кнопок.Вам также необходимо кодировать OnChangeMonthYear, чтобы сохранить новые кнопки при изменении года / месяца.Примечание. OnChangeMonthYear принимает год, месяц и элемент управления вводом (немного отличается от beforeShow).

var datePickerOptsMax: {
    dateFormat: 'dd-M-yy',
    showOn: 'button',
    buttonImage: 'Styles/Images/Calendar_scheduleHS.png',
    buttonImageOnly: true,
    buttonText: 'Select a date',
    showButtonPanel: true,
    changeMonth: 'true',
    changeYear: 'true',
    beforeShow: function (input) { 
        dpClearButton(input);    
        dpMaxButton(input); 
    },
    onChangeMonthYear: function (yy, mm, inst) { 
        dpClearButton(inst.input); 
        dpMaxButton(inst.input); 
    }
}

function dpClearButton (input) {
    setTimeout(function () {
        var buttonPane = $(input)
        .datepicker("widget")
        .find(".ui-datepicker-buttonpane");

        $("<button>", {
            text: "Clear",
            click: function () { jQuery.datepicker._clearDate(input); }
        }).appendTo(buttonPane).addClass("ui-datepicker-clear ui-state-default ui-priority-primary ui-corner-all");
    }, 1)
}
function dpMaxButton (input) {
    setTimeout(function () {
        var buttonPane = $(input)
        .datepicker("widget")
        .find(".ui-datepicker-buttonpane");
        $("<button>", {
            text: "Max",
            click: function () { 
                 jQuery(input).datepicker('setDate', '31-Dec-9999');   
                 jQuery(input).datepicker('hide'); }
        }).appendTo(buttonPane).addClass("ui-datepicker-clear ui-state-default ui-priority-primary ui-corner-all");
    }, 1)
}

jQuery('#txtboxid').dialog(datePickerOptsMax);
6 голосов
/ 05 июля 2011

Я видел сообщение, показывающее, как добавить кнопку в эту область средства выбора даты:

http://csharptechies.blogspot.com/2010/12/adding-custom-buttons-to-jquery.html

Однако работает нормально, когда вы меняете месяц, пользовательские кнопки исчезают. Было бы очень интересно узнать, удалось ли кому-нибудь сохранить кнопки видимыми.

3 голосов
/ 26 февраля 2015

Вы можете изменить атрибут "BeforeShow" datepicker в вашем файле jquery-ui.js

$(".datepicker").datepicker({  
 showButtonPanel: true,  
      beforeShow: function( input ) {  
 setTimeout(function() {  
   var buttonPane = $( input )  
     .datepicker( "widget" )  
     .find( ".ui-datepicker-buttonpane" );  
  
   var btn = $('<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all">Clear</button>');  
   btn  
    .unbind("click")  
    .bind("click", function () {  
    $.datepicker._clearDate( input );  
  });  
  
   btn.appendTo( buttonPane );  
  
 }, 1 );  
      }  
});  
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/jquery-ui.min.js"></script>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.3/themes/smoothness/jquery-ui.css" />

<input class="datepicker" type="text">
3 голосов
/ 04 января 2014

Этот пример кода добавляет кнопку предыдущего дня и следующий день в указатель даты jQuery на панели кнопок:

//   Setting date picker options.
$('#datepicker').datepicker(
    {    onSelect: newDateSelected,   //function for new date 
         showButtonPanel: true, 
    }
);

//   HTML Text for previous day button
var PrevDay     = '<button id="PrevDay" class="ui-datepicker-current ' + 
              'ui-state-default ui-priority-secondary ui-corner-all" '+
              'type="button">Prev Day</button> ';
//   HTML Text for next day button
var NextDay     = '<button id="NextDay" class="ui-datepicker-current ' + 
                  'ui-state-default ui-priority-secondary ui-corner-all" '+
                  'type="button">Next Day</button> ';

//    Setting text for Date Picker Button Panel       
$('#datepicker').datepicker("option", "currentText", "Today " + PrevDay  + NextDay );

//    Setting "click" functions for prev and next day buttons.
$('#NextDay').click(nextDaySelected);
$('#PrevDay').click(prevDaySelected);


//===========Begin Functions==============================
function nextDaySelected(){
    alert("Next Day Selected; button not activated yet.");
}

function prevDaySelected(){
    alert("Previous Day Selected; button not activated yet.");
}

function newDateSelected(dateText, inst){
    // .toSource displays object details in FireFox
    alert("dateText = " + dateText + ", inst = " + inst.toSource());

    //  Timeout was added to re-enable PrevDay and NextDay Buttons.
    setTimeout(function (){
    $('#NextDay').click(nextDaySelected);
    $('#PrevDay').click(prevDaySelected);
    }, 1000);
}
2 голосов
/ 05 января 2011

Если вы говорите об использовании кнопки / значка для запуска, вы можете использовать это:

<script>
$(function() {
    $( "#datepicker" ).datepicker({
        showOn: "button",
        buttonImage: "images/calendar.gif",
        buttonImageOnly: true
    });
});
</script>

Если вы хотите присвоить его ссылке / кнопке:

<script>
$(function() {    
       $(button_id).click(function() {
          $(input).datepicker('show');
       });
    });
</script>
0 голосов
/ 23 июня 2015

Я сделал плагин JQuery на основе DatePicker для добавления кнопок, которые вы можете проверить на моем github:

https://github.com/rogeroliveira84/bootstrap-datepicker-buttons

Автоматически добавляет кнопки: в прошлом месяце, на этой неделе, вчера, сегодня

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...