0

我有一个 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 的空白值返回任何内容,但错误告诉我它不存在?

4

3 回答 3

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复制而来,并不完全符合您的要求。

代码未经测试...

于 2013-05-15T00:37:53.033 回答
1

大概初始字符串类似于 2013 年 5 月 15 日。

用来分析这个的 JS 使用:

var day1 = parseInt(pieces[1],10);

我如何解析这个,以便 datepicker 的空白值返回任何内容,但错误告诉我它不存在?

我不确定你在问什么。如果您的意思是“如果原始字符串为空白,我想要第 1 天的值” 0那么您可以检查一个值并根据测试结果将该值作为数字或 0 返回:

var day1 = typeof pieces[1] == 'undefined' ? +pieces[1] : 0;   

顺便说一句,从您的代码来看,day1应该是peices[0]

于 2013-05-15T00:53:34.020 回答
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]);  
  }
}
于 2013-05-15T00:40:49.580 回答