没有日历的日期验证插件

Posted

技术标签:

【中文标题】没有日历的日期验证插件【英文标题】:Date validation plugin without calendar 【发布时间】:2012-07-25 13:55:28 【问题描述】:

我们正在推出一个新的内容管理系统并重做我们的用户输入表单,让营销部门可以完全控制显示的内容、顺序等。我真的很想使用 jquery ui datepicker 插件,因为我们基本上可以将其验证规则直接插入 CMS,从而实现完全可定制的控件,无需任何开发输入。我已经展示了它并展示了它是多么容易配置。

我们当前的表单使用三种不同的下拉菜单,日、月和年各一个。有一些人并没有改变这种外观/感觉。我们都见过他们,其中之一:

<select>
    <option value="">-- Month --</option>
    <option value="1">Jan</option>
    <option value="2">Feb</option>
    <option value="3">etc.</option>
</select>
<select>
    <option value="">-- Day --</option>
    <option value="1">1</option>
    <option value="2">etc.</option>
    <option value="31">31</option>
</select>
<select>
    <option value="">-- Year --</option>
    <option value="etc.">etc.</option>                        
</select>

毫无疑问,我可以实现这一点。我不想做的是编写和维护一个将规则从 CMS 转换为 js 输入的 javascript 库——必须有更好的方法。

我已经向他们展示了 jquery ui 插件中的月/年下拉选择器:http://jqueryui.com/demos/datepicker/#dropdown-month-year,但他们仍然没有购买它。关于显示一个月中的日子的一些事情......利益相关者。

我想知道是否有一个现有的可配置插件在可配置性方面匹配/竞争 jquery UI 插件并提供 3-select 形式因素。我特别使用了mindatemaxdate(用于不同输入类型的不同日期范围)和altformat 选项(自动转换我们后端期望的提交格式)。对不起,如果我的挫败感出来了...感谢您的意见。

编辑:只记得堆栈交换上有一个单独的 UI/UX 区域。如果这更适合那里,我很抱歉 - 我还没有帐户。

【问题讨论】:

我觉得这是属于这里的,它看起来更像是编码而不是设计...... 虽然告诉利益相关者“不”通常是不明智的,但您可以让他们了解决策的成本/影响。告诉他们正确编码和维护 3 个选择需要多长时间,以及实现日期选择器需要多长时间。 我读了两遍这个主题,我不完全理解你想要做什么,以及当前的答案如何没有给你满意的结果。您能否针对您的实际场景提供更多反馈? 试试雅虎用户界面:yuilibrary.com/yui/docs/calendar/calendar-multipane.html @Khez 在您发表评论前一小时,正好有一个答案 :-) 我将尝试其中的一些建议,看看我是否可以在 jsfiddle 中分享一些接近我想要的东西. 【参考方案1】:

根据您的问题标题,您可以查看 datejs 进行所有日期解析、验证和递增。

http://code.google.com/p/datejs/

【讨论】:

+1 这表明了承诺。我之前找到了用于日期格式的 Date Format 1.2.3 * (c) 2007-2009 Steven Levithan &lt;stevenlevithan.com&gt;,但这看起来它将有更多我需要的范围检查。【参考方案2】:

我不确定是否已经有完全适合您需要的东西。

但是,您可以使用date-utils,这将简化您的验证。以下是文档中的一些示例:

Date.validateDay(day, year, month); // true/false whether a date is valid

d.between(date1, date2); // true/false if the date/time is between date1 and date2
d.isBefore(date); // true/false, true if this is before date passed
d.isAfter(date); // true/false, true if this is after date passed

d.toFormat(format); // returns date formatted with...

【讨论】:

【参考方案3】:

this 呢?

例子的链接是here。

【讨论】:

我试过了,但它仍然落后于我的理想用例。这从一些下拉列表中驱动了一个日期选择器日历小部件。它根本无法自动填充或限制日期选择器选项的下拉菜单。我可能会使用他们示例代码的一小部分,但它并没有真正节省任何完全自定义的实现。【参考方案4】:

您可以尝试mobiscroll,它仍然提供下拉式感觉的所有功能,而不会影响外观。

【讨论】:

我确定我不是唯一一个真正不喜欢使用它们的人。 你为什么不喜欢使用它们? 取消选择时,它占用的空间超过 3 个单独的下拉菜单。选择后,它向我显示的选项少于下拉菜单。虽然它不像触摸屏那样为鼠标而设计,但它需要更多的点击才能达到我所追求的值。使用触摸屏时,滑过您想要选择的值要容易得多。 没错,但它确实看起来很酷,顺便说一句,您可以使用鼠标上的滚轮更快地到达任何点。恕我直言,利益相关者似乎更喜欢酷而不是实际可用性。 很遗憾,我完全同意你的看法。

以上是关于没有日历的日期验证插件的主要内容,如果未能解决你的问题,请参考以下文章

jquery 日历控件在php中怎么使用

需要验证出生日期用户应该是 18 岁及以上

jQuery 验证插件日期格式:日期干扰 dateITA

使用 jQuery 验证插件自定义日期格式

带有 jquery datepicker 错误的 jquery 验证插件(请输入有效日期)

jquery日历日期选择问题