有沒有更好的方式來格式化用戶推測的日期。我有一個輸入欄,當點擊一個日曆時彈出,你可以選擇一個日期,但用戶也可以選擇輸入日期。我希望用戶能夠輸入1/12,並且我的JavaScript將其格式化爲01/12/2012。有沒有一種簡單的方法可以解決這個問題,而無需執行所有類型的檢查?如果不是什麼是最好的方式去做這件事?格式化用戶輸入日期。
回答
我剛剛試了一下,但不知道它是否正確的方法,但我認爲它的工作(月/日/年)。
$('input[name="txt_date"]').on('blur', function(e){
var dt=$(this).val();
if(dt!='')
{
if(dt.indexOf('/'))
{
var da=dt.split('/');
var l=da.length;
if(l <= 3)
{
var date='';
for(i=0;i<l;i++)
{
if(i==0)
{
if(da[i].match(/^\d{1}|d{2}$/) && da[i]>0 && da[i]<=12)
{
var m=da[i].length==1 ? '0'+da[i] : da[i];
date=m;
}
}
if(i==1)
{
if(da[i].match(/^\d{1}|d{2}$/) && da[i]>0 && da[i]<=31)
{
var d=da[i].length==1 ? '0'+da[i] : da[i];
date+='/'+d;
}
}
if(i==2)
{
if(da[i].match(/^\d{4}$/))
{
date+='/'+da[i];
}
else date+='/'+new Date().getFullYear();
}
}
if(l<3)
{
date+='/'+new Date().getFullYear();
}
if(date.match(/^\d{2}\/\d{2}\/\d{4}$/))
{
$(this).val(date);
}
else alert('invalid date!');
}
}
}
});
'for'循環在開始的時候有點令人困惑 - 很好的技巧,但我更喜歡沒有'for'的代碼,'if(i == 0)'和'if(i == 1)'+ replace if (i == 2)'if'(l === 3)'+用'else'替換if(l <3)'' – Aprillion
感謝您抽出時間寫出來。我喜歡這種方式,但覺得它與正則表達式有點難以理解。 –
我結束了使用這一些。修改它有點但是是.. –
這個庫可以幫助你:http://www.datejs.com/
DD/MM/YYYY是例如有效的格式在西班牙,英國,...
datejs多年未更新。我發現http://momentjs.com/是一個更清潔和更新的實現。 – mbarrows
這是我想出了。
var checkDate = function(dateVal, input){
if(dateVal.length == 10){
return;
}
var d = new Date();
var currentMonth = d.getMonth();
var year = d.getFullYear();
var firstIndex = dateVal.indexOf('/');
var month = parseInt(dateVal.substr(0, firstIndex));
var day = parseInt(dateVal.substr(firstIndex + 1, 2));
if(month < 10){
month = '0' + month;
}
if(day < 10){
day = '0' + day;
}
if(month > currentMonth){
year = year - 1;
}
dateVal = month + '/' + day + '/' + year;
if(isNaN(month)){
input.val('');
return;
}
input.val(dateVal);
};
我更喜歡Sheikh Heera的回答,但是如果這樣能夠捕捉到所有你想要的情況,那麼這是一種可行的方式 – Aprillion
我向它添加了幾個小檢查來使它合法化,但它現在完成了我現在需要的一切。我也喜歡sheikh-heera的回答,但真的覺得這種方式是不可讀的。 –
- 1. 使用simple_form格式化日期輸入
- 2. PHP採取用戶輸入和格式化輸出(日期)
- 3. 從用戶輸入的日期格式
- 4. Tkinter - 輸入框 - 格式化爲日期
- 5. C#格式化用戶輸入僅限日期
- 6. 格式化Java中的用戶輸入日期
- 7. 格式化日期輸出
- 8. Angularjs輸入日期格式短日期
- 9. AngularJS:日期格式輸入
- 10. 日期輸入格式?
- 11. PHP日期輸入格式
- 12. 將Google電子表格中的用戶輸入格式化爲日期
- 13. 日期輸入控件MVC - mm/dd/yyyy格式,無論用戶輸入哪種格式日期
- 14. 重新格式化用戶輸入
- 15. 格式化日期?
- 16. 日期格式化
- 17. 用Java格式化日期
- 18. 格式化日期輸出散列
- 19. 格式化日期輸出 - PHP
- 20. 格式化日期輸出,在WordPress
- 21. 用Perl格式化日期格式
- 22. 通過提示用戶輸入日期格式來解析日期?
- 23. 使用簡單的用戶輸入格式轉換自定義日期格式
- 24. 如何將用戶輸入轉換爲MySQL日期格式?
- 25. 將用戶輸入轉換爲我的日期格式
- 26. Form_for強制用戶輸入日期格式
- 27. 用戶輸入,驗證日期格式是否正確
- 28. 強制用戶輸入特定的日期格式
- 29. 在WPF datepicker中指定用戶輸入的日期格式
- 30. 格式化日曆日期
它的mm/dd/yyyy。 –
我只是想出了一個很好的小修補程序,稍後我會在這裏發佈。 –