Jquery,手动输入的datepicker

时间:2016-04-11 14:33:11

标签: javascript jquery date datepicker

我有一个日期选择器,我注意到如果我手动输入日期,这意味着在不使用日历的情况下输入格式为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,
            });
        }

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您可能不得不独立于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

答案 2 :(得分:0)

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

XDocument Xdoc = new XDocument(new XElement("XMLFile"));
if (System.IO.File.Exists(filepath))
{
     Xdoc = XDocument.Load(filepath);
}
else
{
     Xdoc = new XDocument();
}

var existing = Xdoc.Descendants("Member").FirstOrDefault(m => m.Element("Name")?.Value == txtName.Text);

if (existing != null) //name existed in xml
{
      existing.Element("Age").Value = txtAge.Text;
      //....
      //....
}
else
{
      XElement xml = new XElement("Member");
      xml.Add(new XElement("Name", txtName.Text));
      xml.Add(new XElement("Age", txtAge.Text));
      xml.Add(new XElement("Nationality", txtNationality.Text));
      xml.Add(new XElement("EmailAddress", txtEmailAddress.Text));
      xml.Add(new XElement("ContactNumber", txtContactNumber.Text));

      if (Xdoc.Descendants().Count() > 0)
      {
          Xdoc.Descendants().First().Add(xml);
      }
      else
      {
          Xdoc.Add(xml);
      }
}

Xdoc.Save(filepath));