0

好的,我们正在使用该jquery-ui-timepicker-addon-0.9.3.js文件

它有一个很好的日历弹出窗口并填充一个输入字段。

问题是,如果输入字段已经填充并且说有人调出日历并且碰巧点击下个月并点击远离日历......即使“完成”,输入字段也会更新为下个月按钮没有被点击。

如果有人熟悉此 JS 文件...我将不胜感激,因为只有在选择日期后单击“完成”按钮才能更新字段...

    $(function()
{
    $("#publication_datepicker").datetimepicker(
    {
        dateFormat: 'mm-dd-yy',
        showOn: 'button',
        buttonImage: '..images/calendar.gif',
        buttonImageOnly: true,
        minDate: 0,
        maxDate: '+5Y',
        duration: '',
        <c:if test="${formIsReadonly or form.newsItemId == '-1'}">disabled: true,</c:if>
        constrainInput: false,
        timeFormat: 'hh:mm'
    });

JS 文件: jquery-ui-timepicker-addon.js

在此处输入图像描述

4

2 回答 2

1

发现问题...在js文件中有一个函数叫:_newInst

我在 2 个部分中注释掉了这一行:

tp_inst._updateDateTime(dp_inst)

修复了问题

 _newInst: function ($input, o) {
        var tp_inst = new Timepicker(),
            inlineSettings = {};
        tp_inst.hour = tp_inst._defaults.hour;
        tp_inst.minute = tp_inst._defaults.minute;
        tp_inst.second = tp_inst._defaults.second;
        tp_inst.ampm = "";
        tp_inst.$input = $input;
        for (var attrName in this._defaults) {
            var attrValue = $input.attr("time:" + attrName);
            if (attrValue) {
                try {
                    inlineSettings[attrName] = eval(attrValue)
                } catch (err) {
                    inlineSettings[attrName] = attrValue
                }
            }
        }
        tp_inst._defaults = $.extend({}, this._defaults, inlineSettings, o, {
            beforeShow: function (input, dp_inst) {
                if ($.isFunction(o.beforeShow)) {
                    o.beforeShow(input, dp_inst, tp_inst)
                }
            },
            onChangeMonthYear: function (year, month, dp_inst) {
                //tp_inst._updateDateTime(dp_inst);
                if ($.isFunction(o.onChangeMonthYear)) {
                    o.onChangeMonthYear(year, month, dp_inst, tp_inst)
                }
            },
            onClose: function (dateText, dp_inst) {
                if (tp_inst.timeDefined === true && $input.val() != "") {
                    //tp_inst._updateDateTime(dp_inst)
                }
                if ($.isFunction(o.onClose)) {
                    o.onClose(dateText, dp_inst, tp_inst)
                }
            },
            timepicker: tp_inst
        });
        if (o.altField) {
            tp_inst.$altInput = $(o.altField).css({
                cursor: "pointer"
            }).focus(function () {
                $input.trigger("focus")
            })
        }
        if (tp_inst._defaults.minDate !== undefined && tp_inst._defaults.minDate instanceof Date) {
            tp_inst._defaults.minDateTime = new Date(tp_inst._defaults.minDate.getTime())
        }
        if (tp_inst._defaults.minDateTime !== undefined && tp_inst._defaults.minDateTime instanceof Date) {
            tp_inst._defaults.minDate = new Date(tp_inst._defaults.minDateTime.getTime())
        }
        if (tp_inst._defaults.maxDate !== undefined && tp_inst._defaults.maxDate instanceof Date) {
            tp_inst._defaults.maxDateTime = new Date(tp_inst._defaults.maxDate.getTime())
        }
        if (tp_inst._defaults.maxDateTime !== undefined && tp_inst._defaults.maxDateTime instanceof Date) {
            tp_inst._defaults.maxDate = new Date(tp_inst._defaults.maxDateTime.getTime())
        }
        return tp_inst
    }
于 2012-10-17T18:55:54.577 回答
0

你可以试试这个(未测试):

   $("#publication_datepicker").datetimepicker(
        {
            dateFormat: 'mm-dd-yy',
            showOn: 'button',
            buttonImage: '../chassis/images/calendar.gif',
            buttonImageOnly: true,
            minDate: 0,
            maxDate: '+5Y',
            duration: '',
            <c:if test="${formIsReadonly or form.newsItemId == '-1'}">disabled: true,</c:if>
            constrainInput: false,
            timeFormat: 'hh:mm'
        });

 $.datepicker.unbind('blur');
于 2012-10-17T17:16:42.917 回答