设置 jquery ui 日期选择器的日期格式限制输入中的自由文本

Setting dateFormat of jquery ui datepicker restricts free text in input

我正在使用 jquery ui 日期选择器。 我只是想将 dateFormat 设置为类似:"dd/mm/yy",所以我的 javascript 是:

$("#datepicker").datepicker({
     dateFormat: "dd/mm/yy"
});

相关的html是:

<input type='text' id='datepicker'>

但是,这样做会限制输入元素中可以输入的文本(例如,我不能输入“-”或“.”)。

http://jsfiddle.net/5sVpA/3/

我需要此功能,因为我希望用户也能够使用其他一些 "date delimiting" 选项(例如:“5-5-16”)自由输入他们的日期。这是不可能的,因为指定"dateFormat"选项后不能输入“-”符号。

有没有办法解决这个问题或者这是一个错误?

你可以这样做,你需要在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;
};

以上代码来自这里

我找到了你的 post 的解决方案。

试试这个代码。

$('#txtDatePicker').datepicker({
    dateFormat: 'dd-mm-y'
});

我找到了答案。 有一个 "constrainInput" 选项必须设置为 false。 所以:

$("#datepicker").datepicker({
     dateFormat: "dd/mm/yy",
     constrainInput: false
});