【问题标题】:Jquery, datepicker on manual entryJquery,手动输入的日期选择器
【发布时间】:2016-08-01 18:59:15
【问题描述】:

我有一个日期选择器,我注意到如果我手动输入一个日期,这意味着在不使用日历的情况下输入 mm/dd/yyyy 形式的值,日期不会更新。

我想允许手动更改日期。因此,我需要验证更新输入的日期。

我首先尝试像这样使用函数change

$('myDatepickerId').change(...)

它不起作用,所以经过一些研究后我发现了 onClose: 属性。

我是这样使用的:

onClose: function(date) {
           this_.tripWidget.inputChanged({
                date : date,
            });
        }

这会更新日期,但我不确定如何验证它。

我正在寻找与 datepicker 关联的函数,以确保输入的日期格式正确。无论如何要验证日期是否在日期选择器日历中?

编辑:

我在这里找到了一个相关的问题: Detecting an "invalid date" Date instance in JavaScript

然后我尝试(不成功)调整答案以适应我的问题:

onClose: function(date) {
            this_.tripWidget.inputChanged({
                if ( Object.prototype.toString.call(date) === "[object Date]" && !isNaN(date.getTime()){
                    alert("Please enter a valid date.");
                }
                date : date,
            });
        }

【问题讨论】:

标签: javascript jquery date datepicker


【解决方案1】:

这可能是您在发送请求时想要在服务器脚本中验证的内容,而不是在 javascript 中。

【讨论】:

  • 当然数据应该始终在服务器端进行验证。但考虑到可用性改进,也推荐客户端验证。顺便说一句,您的“答案”应该是评论......
【解决方案2】:

您可能必须独立于 DatePicker 控件进行验证。您可以对 A) 确保它是有效日期和 B) 确保它采用所需的 mm/dd/yyyy 格式

$('#myDatepickerId').on('input', function () {
    var value = $(this).val();
    if (isValidFormat(value) && isValidDate(value)) {
        $(this).addClass('valid');
    }
});

function isValidFormat(value) {
    var regex = new RegExp("^([01][0-12]\/[0-3][0-9]\/[12][0-9][0-9][0-9])$");
    return regex.test(value);
}
function isValidDate(value) {
    var date = new Date(value);
    return date != 'Invalid Date';
}

这是working plunker

【讨论】:

    【解决方案3】:

    以下代码是我解决问题的方法:

    var comp = date.split('/');
    var m = parseInt(comp[0], 10);
    var d = parseInt(comp[1], 10);
    var y = parseInt(comp[2], 10);
    var date2 = new Date(y,m-1,d);
    if(!(date2.getFullYear() == y && date2.getMonth() + 1 == m && date2.getDate() == d)) {
                    alert('Please enter a valid date.');
    }
    

    【讨论】:

      猜你喜欢
      • 2019-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-05
      • 2012-05-02
      • 1970-01-01
      相关资源
      最近更新 更多