Datepicker:在错误输入时恢复到最后一个值

大多数validation插件只显示错误消息。 但是,我希望(datepicker)防止输入不正确的值,自动恢复到上一个​​正确的值(不是页面加载时的初始值,而是最后一个正确的值)。

怎么可能?

它可能是我,但我倾向于发现这是一个可怕的UI:如果我在日期或任何其他字段中输入错误,我想要的最后一件事就是需要从头开始重新输入。

理想情况下,UI不应该允许您首先输入错误的日期。

如果它确实允许你这样做,那么我宁愿通过将其背景颜色切换为红色(可能带有非侵入性错误消息)来看到该字段突出显示自己,这样我就可以找到拼写错误并修复它而无需重新设置进入它。

我刚刚发现了lastVal param,这似乎是你想要的。 试试这个(答案是在CoffeeScript中,但很容易转换为JavaScript):

$(".date1").datepicker.onClose = (dateText, inst) -> if selectedDateIsValid(dateText, inst) // Process new date else $(this).val(inst.lastVal) window.alert("The selected day is invalid: ", dateText) 

有关一些背景信息,请参阅有关datepicker的问题的答案 。 因此,您可以使datepicker负责将文本输入转换为日期对象。 您可以在此类转换之前保存以前的有效值,并在新输入出现问题时恢复它,如下所示:

 // save current value var currentDate = $('#dateInput').datetimepicker().val(); // transform current text input into date $('#dateInput').datetimepicker('setDate', $('#dateInput').val()); // ... // revert value in case you catch a problem with new date $('#dateInput').datepicker().val(currentDate); $('#dateInput').val($('#dateInput').datepicker().val());