در هنگام ساخت نرم افزار خیلی از مواقع input های شما تاریخ یا ساعت هستند و شما برای اینکه تاریخ را مثلا یک روزعوض کنید باید یا کل آنرا دوباره بنویسید یا ابتدا قسمت مورد نظر را select کرده سپس تغییر دهید
با استفاده از این کد میتوانید با کلید های جهت(بالا-پایین) در کیبوردتغییرات را به راحتی انجام دهید
الف:در مورد زمان:
بالا: افزایش 1 دقیقه پایین: کاهش 1 دقیقه Ctrl+بالا: افزایش یک ساعت Ctrl+پایین: کاهش 1 ساعت
الف:در مورد تاریخ:
بالا: افزایش 1 روز پایین: کاهش 1 روز Ctrl+بالا: افزایش یک ماه Ctrl+پایین: کاهش 1 ماه
A: زمان
$(document).ready(function(){
$("#your_field_id").keydown(function(e) {
if (e == null)
e = window.event;
var evt = e || window.event;
var key = e.which || e.charCode || e.keyCode;
var Ctrlkey = evt.ctrlKey;
value = $(this).val();
hour = parseInt(value.substr(0, 2));
if(parseInt(value.substr(0, 1)) == 0 )
{
hour = parseInt(value.substr(1, 1));
}
minute = parseInt(value.substr(3, 2));
if(parseInt(value.substr(3, 1)) == 0 )
{
minute = parseInt(value.substr(4, 1));
}
switch (key) {
case 38: // Up
nextMinute = minute + 1;
nextHour = hour + 1;
if(Ctrlkey == true)
{
if (nextHour <24)
{
hour = hour+1;
}
}
else
{
if(nextMinute < 60)
{
minute = nextMinute;
}
else if ((nextMinute > 59) &&( nextHour <24))
{
hour = hour+1;
minute = 0;
}
}
if(minute <10)
{
minute = ,0,+minute.toString();
}
else
{
minute = minute.toString();
}
if(hour <10)
{
hour = ,0,+hour.toString();
}
else
{
hour = hour.toString();
}
$(this).val(hour+,:,+minute);
break;
case 40: // Down
prevMinute = minute - 1;
prevHour = hour - 1;
if(Ctrlkey == true)
{
if (prevHour >=0)
{
hour = hour-1;
}
}
else
{
if(prevMinute >= 0)
{
minute = prevMinute;
}
else if ((prevMinute < 0) &&( prevHour >=0))
{
hour = hour-1;
minute = 59;
}
}
if(minute <10)
{
minute = ,0,+minute.toString();
}
else
{
minute = minute.toString();
}
if(hour <10)
{
hour = ,0,+hour.toString();
}
else
{
hour = hour.toString();
}
$(this).val(hour+,:,+minute);
break;
}
});
});
B: تاریخ
$(document).ready(function(){
$("#your_input_id").keydown(function(e) {
if (e == null)
e = window.event;
var evt = e || window.event;
var key = e.which || e.charCode || e.keyCode;
var Ctrlkey = evt.ctrlKey;
value = $(this).val();
year = parseInt(value.substr(0, 4));
month = parseInt(value.substr(5, 2));
if(parseInt(value.substr(5, 1)) == 0 )
{
month = parseInt(value.substr(6, 1));
}
day = parseInt(value.substr(8, 2));
if(parseInt(value.substr(8, 1)) == 0 )
{
day = parseInt(value.substr(9, 1));
}
switch (key) {
case 38: // Up
nextYear = year + 1;
nextMonth = month + 1;
nextDay = day + 1;
if(Ctrlkey == true)
{
if (nextMonth <=12)
{
month = month+1;
}
}
else
{
if(month < 7)//6 ماه اول
{
if(nextDay <= 31)
{
day = nextDay;
}
else if (nextMonth <= 12)
{
month = month+1;
day = 1;
}
}
else
{
if(nextDay <= 30)
{
day = nextDay;
}
else if ((nextDay > 29) &&( nextMonth <= 12))
{
month = month+1;
day = 1;
}
else
{
year = year+1;
month = 1;
day = 1;
}
}
}
if(month <10)
{
month = ,0,+month.toString();
}
else
{
month = month.toString();
}
if(day <10)
{
day = ,0,+day.toString();
}
else
{
day = day.toString();
}
$(this).val(year+,/,+month+,/,+day);
break;
case 40: // Down
prevYear = year - 1;
prevMonth = month - 1;
prevDay = day - 1;
if(Ctrlkey == true)
{
if (prevMonth > 0)
{
month = month-1;
}
}
else
{
if(month <= 7)//6 ماه اول
{
if(prevDay > 0)
{
day = prevDay;
}
else if(prevMonth > 0)
{
month = month-1;
day = 31;
}
else
{
year = year-1;
month = 12;
day = 30;
}
}
else
{
if(prevDay > 0)
{
day = prevDay;
}
else if ( prevMonth > 0)
{
month = month-1;
day = 30;
}
}
}
if(month <10)
{
month = ,0,+month.toString();
}
else
{
month = month.toString();
}
if(day <10)
{
day = ,0,+day.toString();
}
else
{
day = day.toString();
}
$(this).val(year+,/,+month+,/,+day);
break;
}
});
});