2010-12-03 39 views
7

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

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

我真的不在乎在用户选项卡出来之后,数值是否会变成某种特定格式。一个好的输入掩码插件也可以用于我的目的,但是,this popular one似乎期望每个字段具有固定的基数,这将不起作用,因为我希望用户能够在3月份输入3或03 , 例如。

+1

为什么jQueryUI Datepicker dateFormat不适合你? http://jqueryui.com/demos/datepicker/#date-formats – 2010-12-03 16:21:32

+0

我希望用户能够以各种格式输入日期,我并不关心哪一个,我不希望他们必须提前指定。 dateFormat只接受一种格式。 – 2010-12-03 16:36:24

回答

1

您可以尝试解释多种格式信号输入,并在blur事件替换字符:

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

不幸的是,如果我不能找到一种方法,做,如果输入相同键被按下。

17

这已经有一段时间,因为这个问题是积极的,但如果有人有兴趣解决在使用简单的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; 
}; 
0

凯奇响尾蛇回答您可以重写jquery datepicker函数parseDate以支持多种格式。 (我不能评论,由于声誉,但需要添加此信息不管)

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

另外考虑如果你不重写这两个,他们将不会像预期的那样。例如。您将无法键入自定义格式列表中的字符(除了存储在日期选择器本身中的第一种格式)。