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

时间:2011-05-23 09:44:14

标签: jquery validation datepicker

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

这怎么可能?

3 个答案:

答案 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());