11

有没有办法处理在 jquery UI DatePicker 中按下“完成”按钮的事件?

我有一个日期选择器,它只允许在年份和月份之间进行选择,如这里

问题是使用 onclose 事件会阻止我清除该字段(如果我单击弹出的日期选择器,那么如果我关闭当前选定的月份和年份将被放入该字段)。

我不想在日期选择器之外使用额外的“清除”按钮,所以我虽然可以使用“完成”按钮。

4

5 回答 5

8

我在一个论坛上找到了解决方案(不记得在哪里 - 抱歉)。我知道已经有一段时间了,但是为了将来的搜索:)

注意:更改需要在插件中完成。您只需搜索“onClose:”即可找到它。

onClose: function (dateText, inst) {
    function isDonePressed() {
        return ($('#ui-datepicker-div').html().indexOf('ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all ui-state-hover') > -1);
    }
    if (isDonePressed()){
        alert('done pressed');
    }
}
于 2015-04-24T09:23:12.433 回答
8

当“完成”按钮调用 _hideDatepicker 函数时,您可以覆盖它:

jQuery.datepicker._hideDatepicker = function() {
  alert('hello');
};
于 2013-03-25T17:16:41.003 回答
7

这是完美的解决方案:

$(function() {
    $('.monthYearPicker').datepicker({
        changeMonth: true,
        changeYear: true,
        showButtonPanel: true,
        dateFormat: 'MM yy'
    }).focus(function() {
        var thisCalendar = $(this);
        $('.ui-datepicker-calendar').detach();
        $('.ui-datepicker-close').click(function() {
            var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
            var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
            thisCalendar.datepicker('setDate', new Date(year, month, 1));
        });
    });
});

CSS:

.ui-datepicker-calendar {
    display: none;
}

HTML:

<label for="myDate">Date :</label>
<input name="myDate" class="monthYearPicker">

看看它在这个jsfiddle中是如何工作的。

来源:http: //develop-for-fun.blogspot.com/2013/08/jquery-ui-datepicker-month-and-year.html

礼貌:结合了 这个那个答案来制作这个解决方案。

于 2013-08-16T07:02:38.500 回答
2
$('#start_date_download').datepicker({
    dateFormat:"yy-mm-dd",
    "autoclose": true,
    showButtonPanel: true,
    closeText: 'Clear' 
}).focus(function() {
    var thisCalendar = $(this);
    $('.ui-datepicker-close').click(function() {
        $.datepicker._clearDate($('#start_date_download'));
    });
});
于 2015-08-04T05:02:15.510 回答
1

也许:

$('#myInput')
    .datepicker({
        // datepicker options
    })
    .datepicker('widget')
    .find('.ui-datepicker-close')
    .on('click', function () {
        // done button's handler here
    });
于 2013-07-14T18:27:04.460 回答