Jquery,手动输入的日期选择器
Jquery, datepicker on manual entry
我有一个日期选择器,我注意到如果我手动输入日期,即在不使用日历的情况下输入mm/dd/yyyy形式的值,则日期不会更新。
我想允许手动更改日期。因此,我需要验证并更新输入的日期。
我开始尝试使用函数change
,如下所示:
$('myDatepickerId').change(...)
它不起作用,所以经过一些研究,我发现了onClose:
属性。
我这样使用:
onClose: function(date) {
this_.tripWidget.inputChanged({
date : date,
});
}
这更新了日期,但我不确定如何验证它。
我正在寻找一个与日期选择器相关的函数,以确保输入的日期格式正确。是否有任何方法可以验证日期是否在日期选择器日历中?
编辑:
我在这里发现了一个相关的问题:检测到一个";无效日期";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中验证这一点。
您可能需要独立于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';
}
这是一个工作的plunker
以下代码是我解决问题的方法:
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.');
}
相关文章:
- jquery日期选择器年份范围默认值
- jquery日期选择器失去了交互性
- 正在搜索JavaScript日期选择器滑块
- 如何在多个jQueryUI日期选择器中屏蔽特定日期
- jquery日期选择器显示与值不同的文本
- JQuery UI日期选择器:在选择出发日期时自动弹出返回日期
- Angular UI启动日期选择器问题
- 奇怪的日期选择器行为,与模糊有关
- 我希望这个日期选择器可以从1990年到2000年之间的年份中选择日期
- keith wood日期选择器日期格式和语言
- 在日期更改后更新Angular UI引导程序日期选择器选项
- Jquery UI日期选择器不关注输入
- Javascript两个日期选择器冲突
- 动态添加的标记不会'无法正确使用日期选择器
- 日期选择器无法使用javascript显示
- AngularJS自定义日期选择器指令
- 他们网站上的代码出现启动日期选择器错误
- 从第一个日期选择器定义第二个日期选择器的开始日期
- 更改日期选择器格式
- 带有推特助推器的日期选择器出现了,但没有't更改日期