有没有更好的方式来格式化用户推测的日期。我有一个输入栏,当点击一个日历时弹出,你可以选择一个日期,但用户也可以选择输入日期。我希望用户能够输入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。 –
我只是想出了一个很好的小修补程序,稍后我会在这里发布。 –