大多数验证插件只显示错误消息。但是,我希望(datepicker)防止输入不正确的值,自动恢复到上一个正确的值(不是页面加载时的初始值,而是最后一个正确的值)。
这怎么可能?
答案 0 :(得分:1)
可能是我,但我倾向于发现这是一个可怕的用户界面:如果我在日期或任何其他字段中输入拼写错误,我想要的最后一件事是需要从头开始重新输入。
理想情况下,UI不应该允许您首先输入错误的日期。
如果它确实允许你这样做,那么我宁愿通过将其背景颜色切换为红色(可能带有非侵入性错误消息)来看到该字段突出显示自己,这样我就可以找到拼写错误并修复它需要重新输入它。
答案 1 :(得分:1)
我刚刚发现了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)
答案 2 :(得分:0)
有关背景信息,请参阅此answer to a question about 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());