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