我遇到一个问题,即用户直接在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,我可以认为这可能是问题所在。
我无法升级所以我会继续测试,看看这是否确实如此。如果有人不知道,请告诉我。感谢
答案 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);
}
}
});