ユーザーによって入力された日付をフォーマットするためのより良い方法はありますか?カレンダーをクリックするとポップアップする入力フィールドがあり、日付を選択できますが、ユーザーは日付を入力することもできます。ユーザーが1/12と入力し、JavaScriptを使用して2012年1月12日にフォーマットできるようにしたいと思います。すべてのタイプのチェックを行わなくても、これを実行する簡単な方法はありますか?そうでない場合、これについて行くための最良の方法は何ですか?
2479 次
3 に答える
3
このライブラリはあなたを助けるかもしれません:http ://www.datejs.com/
dd / mm / yyyyは有効な形式です。たとえば、スペイン、英国、...
于 2012-06-21T17:26:56.773 に答える
3
試してみましたが、それが適切かどうかはわかりませんが、機能していると思います(月/日/年)。
$('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!');
}
}
}
});
于 2012-06-21T18:46:04.727 に答える
1
これが私が思いついたものです。
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);
};
于 2012-06-21T19:59:01.857 に答える