2013-05-15 70 views
0

我有一個HTML表單,它將日期和時間傳遞給JavaScript來完成一些事情。 jQuery的用來傳遞變量JavaScript是:我需要它返回0,如果空白與jQuery datepicker

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); 

如何可以解析這使得對於日期選擇一個空值返回什麼,但一個錯誤告訴我它不存在?

回答

1

大概初始字符串就像15/05/2013。

的JS用於分析此用途:

變種DAY1 = parseInt函數(件[1],10);

我該如何解析這個,以便datepicker的空白值返回任何內容,但錯誤告訴我它不存在?

我不確定你在問什麼。如果您的意思是「如果原始字符串是空白的,我需要第1天0」的值,那麼您可以檢查一個值並根據測試結果將值返回爲數字或0:

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

順便提及,從代碼,DAY1peices [0]

+0

啊基本上是啊,如果用戶沒有把它的值放到它必須給出一個值0.我會試試這個謝謝 – user2350696

+0

謝謝!我已經使用typeof對它進行了測試,並且它完美地工作〜你是一個拯救生命的人 – user2350696

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複製而來,並不完全符合您的要求。

該代碼未經測試...

+0

'split中的空字符串總是返回1個元素'是誤導。它將返回一個空數組(即沒有「元素」或「成員」的數組)。此外,正則表達式實際上並不測試它是否是有效的日期,只是格式符合某些標準。 – RobG

+0

錯誤......,''「.split(」/「).length'是1,請告訴我一個有效日期的定義。大約有100個有效日期的定義。與此正則表達式的所有匹配是有效的日期。儘管我寫道,我不知道他對日期的確切要求。 – Philipp

+0

Philipp - 是的,我應該說「可能」不是「會」。 – RobG

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