Сегодня пришлось создавать решение которое включало в себя приведенный ниже код, в принципе это все можно было сделать и на сервере, но надо.
В чем особенность смотрите в комментариях к функциям, мои замечания для блога выделены жирным.
<script type="text/javascript">
// внимание данный скрипт должен быть вставлен ПОСЛЕ !!! формы вывода
/* Сдвигаем дату на указанное количество дней
params:
date a Date object
shift a day count offset
*/
function GetTimeShift(date,shift )
{
var g = new Date(date.toDateString());
g.setHours(shift * 24);
return g.toLocaleDateString();
}
/*
Тут все просто в страничке динамически созданной сервером ищем поля ввода и устанавливаем нужные нам значения (кстати по id не ищу исменно по тому что страница может быть, и будет развернута не один раз)
Установка значений при инициализации текстовых боксов.
Параметры:
date дата и время начала отсчета в формате строки
plane - сдвиг для планируемой даты в днях
fact - сдвиг для фактической даты в днях
prom - сдвиг для промежуточной даты в днях
intPlan - сдвиг для Внутренней плановой даты в днях
*/
function setDate(date,plane,fact,prom,intPlan)
{
var mt = new Date(date);
t = document.body.getElementsByTagName('INPUT');
for(i=0;i<t.length;i++)
{
var er = t[i];
if(er.title == 'Дата')
er.value = GetTimeShift(mt,0);
else if(er.title == 'Плановая')
er.value = GetTimeShift(mt,plane);
else if(er.title == 'Фактическая')
er.value = GetTimeShift(mt,fact);
else if(er.title == 'Промежуточная')
er.value = GetTimeShift(mt,prom);
else if(er.title == 'Внутренняя плановая')
er.value = GetTimeShift(mt,intPlan);
}
}
/*
А вот тут мне особенно нравиться :)
Мы производим разбор параметров переданных в адресной строке и используем их для вызова функции заполнения ячеек, все таки удобная штука JS
Параметры которые анализируем
startDate=12/05/2008 Месяц/день/Год
planDate
factDate
promDate
internalDate
*/
function CompouseDateReq(uri)
{
var date,plane,fact,prom,intPlan;
var ar = uri.split('&');
var arg = new Array();
arg['startDate'] = arg['planDate'] = arg['factDate'] = arg['promDate'] = arg['internalDate']= 0;
for(i=0;i<ar.length;i++)
{
arg[ar[i].split('=')[0]] = ar[i].split('=')[1];
}
// setDate(date,plane,fact,prom,intPlan)
setDate(arg['startDate'],arg['planDate'],arg['factDate'],arg['promDate'],arg['internalDate']);
}
/*
тут все очень просто извлекаем адрес документа и отделяем параметры запроса
*/
function parseUrlParam()
{
var st = new String();
st = document.URL;
try{
CompouseDateReq(st.split('?')[1]);
}
catch(ex)
{
return;
}
}
parseUrlParam();
</script>
Комментариев нет:
Отправить комментарий