【问题标题】:Datepicker: revert to last value on incorrect inputDatepicker:在输入不正确时恢复为最后一个值
【发布时间】:2011-08-31 00:42:00
【问题描述】:

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

这怎么可能?

【问题讨论】:

  • 这里有什么不正确的值??
  • fffff,或 21-Ma-2011 等。任何无法解析为日期的内容。

标签: jquery validation datepicker


【解决方案1】:

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

理想情况下,用户界面首先不应允许您输入错误的日期。

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

【讨论】:

    【解决方案2】:

    我刚刚找到了您正在寻找的 lastVal 参数。试试这个(答案是 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)
    

    【讨论】:

      【解决方案3】:

      请参阅此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());
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-14
        • 1970-01-01
        • 2012-06-07
        • 1970-01-01
        相关资源
        最近更新 更多