Jquery UI datepicker插件 - 如何更改alt字段?

时间:2011-01-17 15:36:40

标签: jquery-ui datepicker

我遇到一个问题,即用户直接在alt字段未更新的输入字段中更改日期。 alt字段更新的唯一时间是使用日历选择特定日期。

代码示例:

$this
.find('#'+strInputID)
.datepicker({altField: '#alt_'+strInputID, altFormat: 'dd/mm/yy', minDate: new Date()})
.datepicker("setDate" , dDfltDate);

请注意我使用的是altFormat,因为输入字段会因本地化而改变,因此无论何时输入发生更改,我都无法直接复制该值。

Jquery Datepicker是否有任何允许的内容?

此处的事件列表没有我想要的内容:http://jqueryui.com/demos/datepicker/

有没有人对如何解决这个问题有任何答案?

修改 这个例子http://jqueryui.com/demos/datepicker/#alt-field 工作,我发现另一个没有的例子。由于我们使用的是v1.7.3而不是1.8.8,我可以认为这可能是问题所在。

我无法升级所以我会继续测试,看看这是否确实如此。如果有人不知道,请告诉我。感谢

1 个答案:

答案 0 :(得分:2)

我设法通过将1.8.8 datepicker代码用于输入字段的keyup事件来实现它,但这不是一个优雅的方法:(欢迎任何其他建议。谢谢

var inputField = $this.find('#'+strInputID);
inputField.datepicker({altField: '#alt_'+strInputID, altFormat: 'dd/mm/yy', minDate: new Date()}).datepicker("setDate", dDfltDate);
inputField.keyup(function (event) {
    var inst = $.datepicker._getInst(event.target);
    if (inst.input.val() != inst.lastVal) {
        try {
            var date = $.datepicker.parseDate($.datepicker._get(inst, 'dateFormat'),
                (inst.input ? inst.input.val() : null),
                $.datepicker._getFormatConfig(inst));
            if (date) { // only if valid
                $.datepicker._setDateFromField(inst);
                $.datepicker._updateAlternate(inst);
                $.datepicker._updateDatepicker(inst);
            }
        }
        catch (event) {
            $.datepicker.log(event);
        }
    }
});