我需要它返回0,如果空白与jQuery datepicker

时间:2013-05-15 00:21:40

标签: javascript jquery html

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

3 个答案:

答案 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]);  
  }
}