jQuery Datepicker,支持多种格式

我想知道是否有人可以建议一个插件或解决方案,允许我同时使用多个输入日期格式的jQuery datepicker插件。 这将允许用户以任何指定的格式输入日期。 即:

3 31 10 3/31/2010 3-31-10 

在用户标签出来之后,我并不关心这个值是否会被破坏为某种特定格式。 一个好的输入掩码插件也可能适用于我的目的,但是, 这个流行的插件似乎期望每个字段的固定基数,这将无法工作,因为我希望用户能够输入3或03个月例如,三月。

这个’ 不显眼的日期选择器小工具V 5’似乎接受多种格式。 我对你提供的所有三种格式进行了快速测试,似乎每个人都被接受了。

演示: http : //www.frequency-decoder.com/demo/date-picker-v5/

已经有一段时间了,因为这个问题是活跃的,但如果有人有兴趣使用更简单的jQueryUI日期选择器解决问题,可以通过调整其parseDate方法来完成:

 $.datepicker.inputFormats = ["dd-mm-yy", "dd/mm/yy", "dd mm yy"];//list formats to be accepted here $.datepicker.originalParseDate = $.datepicker.parseDate; $.datepicker.parseDate = function (format, value, settings) { var date; function testParse(format, value, settings) { if ( ! date ) { try { date = $.datepicker.originalParseDate(format, value, settings); } catch (Error) { } } } testParse(format, value, settings); for(var n = 0, stop = $.datepicker.inputFormats ? $.datepicker.inputFormats.length : 0; n < stop; n++){ testParse($.datepicker.inputFormats[n], value, settings); }; return date; }; 

您可以尝试解释多种输入格式并替换blur事件中的字符:

 $("#datepicker").datepicker({ constrainInput: false }).blur(function() { var txt = $(this).val(); $(this).val(txt.replace(/-| /g, '/')); }); 

不幸的是,如果按下Enter键我无法找到相同的方法。

Cage rattler回答说你可以覆盖jquery datepicker函数parseDate来支持多种格式。 (由于声誉我无法发表评论,但无论如何都需要添加此信息)

我发现如果要将datepicker中的format变量设置为格式列表,还需要覆盖formatDate和_possibleChars函数。 datepicker不期望列表(在我的情况下是JSON),你必须解决这个问题。

还要考虑如果不覆盖这两个,它们将不会按预期运行。 例如,您将无法键入自定义格式列表中的字符(除了存储在datepicker本身中的第一种格式)。