我有一个HTML表单,它将日期和时间传递给JavaScript以完成一些事情。用于将变量传递给JavaScript的jQuery是:
var pieces;
$(document).ready(function() {
$('#datepicker').datepicker({
onSelect: function(dateText, inst) {
window.pieces = dateText.split('/');
$('#day').val(pieces[0]);
$('#month').val(pieces[1]);
$('#year').val(pieces[2]);
}
})
});
用于分析此用途的JavaScript使用:
var day1 = parseInt(pieces[1],10);
我如何解析这个问题,以便datepicker的空白值返回任何内容,但错误告诉我它不存在?
答案 0 :(得分:1)
一个简单的解决方案是检查返回数组的长度(来自split
):
if(window.pieces.length == 3) //an empty string in split does always return 1 element
{
alert('date is valid');
}
更好的方法是使用正则表达式并检查返回的值:
if(dateText.test(/^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$/))
{
alert('date is valid');
}
正则表达式只是从http://www.regular-expressions.info/dates.html复制而来,并不完全符合您的要求。
代码未经过测试......
答案 1 :(得分:1)
据推测,最初的字符串就像15/05/2013。
JS曾经分析过这个用途:
var day1 = parseInt(pieces [1],10);
我如何解析这个问题,以便datepicker的空白值返回任何内容,但错误告诉我它不存在?
我不确定你在问什么。如果你的意思是“如果原始字符串是空白的,我想要{em> day1 0
”的值,那么你可以检查一个值并将值返回为数字或0取决于关于测试结果:
var day1 = typeof pieces[1] == 'undefined' ? +pieces[1] : 0;
顺便说一下,从您的代码中, day1 应该是 peices [0] 。
答案 2 :(得分:0)
您需要在onSelect中添加测试以处理空白日期。
onSelect: function(dateText, inst) {
if(dateText) { // newline
window.pieces = dateText.split('/');
$('#day').val(pieces[0]);
$('#month').val(pieces[1]);
$('#year').val(pieces[2]);
}
}