Подтвердить что ты не робот

Как добавить кнопки в jQuery datepicker на панели кнопок?

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

4b9b3361

Ответ 1

Если вы хотите сохранить кнопку "clear" при прокрутке через месяцы, используйте 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 );
    }
});

Ответ 2

Следующий код позволит вам добавить еще одну кнопку в jQuery UI datepicker. Можно добавить несколько кнопок. Вам также необходимо закодировать 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);

Ответ 3

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

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

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

Ответ 4

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

//   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);
}

Ответ 5

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

$(".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">

Ответ 6

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

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

Если вы хотите назначить его кнопке link/:

<script>
$(function() {    
       $(button_id).click(function() {
          $(input).datepicker('show');
       });
    });
</script>

Ответ 7

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

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

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