Нажатие по дате в календаре срабатывает только со второго клика
Нажатие по дате в календаре срабатывает только со второго клика.
Календарь на Js (Swazz Javascript Calendar) Если нажимать по дате текущего месяца, то срабатывает сразу. Если по предыдущему или следующему, то со второго (в браузере Chrome. В firefox, например, срабатывает с первого раза) Помогите решить проблему.. function getObj(objID) { if (document.getElementById) {return document.getElementById(objID);} else if (document.all) {return document.all[objID];} else if (document.layers) {return document.layers[objID];} } function checkClick(e) { e?evt=e:evt=event; CSE=evt.target?evt.target:evt.srcElement; if (getObj('fc')) if (!isChild(CSE,getObj('fc'))) getObj('fc').style.display='none'; } function isChild(s,d) { while(s) { if (s==d) return true; s=s.parentNode; } return false; } function Left(obj) { var curleft = 0; if (obj.offsetParent) { while (obj.offsetParent) { curleft += obj.offsetLeft obj = obj.offsetParent; } } else if (obj.x) curleft += obj.x; return curleft; } function Top(obj) { var curtop = 0; if (obj.offsetParent) { while (obj.offsetParent) { curtop += obj.offsetTop obj = obj.offsetParent; } } else if (obj.y) curtop += obj.y; return curtop; } // Calendar script var now = new Date; var sccd=now.getDate(); var sccm=now.getMonth(); var sccy=now.getFullYear(); var ccm=now.getMonth(); var ccy=now.getFullYear(); document.write('<table width="252" id="fc" style="position:absolute;border-collapse:collapse;background:#FFFFFF;border:1px solid #303030;display:none;-moz-user-select:none;-khtml-user-select:none;user-select:none;" cellpadding=2>'); document.write('<tr><td colspan="7" align="center" style="cursor:pointer;font:13px Arial;background:#CCCCCC;font-size:10px;">Фильтр Контактов</td></tr>'); document.write('<tr style="font:bold 13px Arial"><td style="cursor:pointer;font-size:15px" onclick="csubm()">«</td><td colspan="5" id="mns" align="center"></td><td align="right" style="cursor:pointer;font-size:15px" onclick="caddm()">»</td></tr>'); document.write('<tr style="background:#666666;font:12px Arial;color:#FFFFFF"><td align=center>П</td><td align=center>В</td><td align=center>С</td><td align=center>Ч</td><td align=center>П</td><td align=center>С</td><td align=center>В</td></tr>'); for(var kk=1;kk<=6;kk++) { document.write('<tr>'); for(var tt=1;tt<=7;tt++) { num=7 * (kk-1) - (-tt); document.write('<td id="v' + num + '" style="width:36px;height:36px" class="calend"> </td>'); } document.write('</tr>'); } document.write('<tr><td colspan="7" align="center" style="cursor:pointer;font:13px Arial;background:#7FC7FF;font-size:10px;"><a href="base.php?data=null" title="" class="link_sotrudnik" style="color:#ffffff;font-size:16px;">Очистить Фильтры</a></td></tr>'); document.write('</table>'); document.all?document.attachEvent('onclick',checkClick):document.addEventListener('click',checkClick,false); var updobj; function lcs(ielem) { updobj=ielem; getObj('fc').style.left=Left(ielem); getObj('fc').style.top=Top(ielem)+ielem.offsetHeight; getObj('fc').style.display=''; // First check date is valid curdt=ielem.value; curdtarr=curdt.split('-'); isdt=true; for(var k=0;k<curdtarr.length;k++) { if (isNaN(curdtarr[k])) isdt=false; } if (isdt&(curdtarr.length==3)) { ccm=curdtarr[1]-1; ccy=curdtarr[2]; prepcalendar(curdtarr[0],curdtarr[1]-1,curdtarr[2]); } } function evtTgt(e) { var el; if(e.target)el=e.target; else if(e.srcElement)el=e.srcElement; if(el.nodeType==3)el=el.parentNode; // defeat Safari bug return el; } function EvtObj(e){if(!e)e=window.event;return e;} function cs_over(e) { evtTgt(EvtObj(e)).style.background='#FFEBCC'; } function cs_out(e) { evtTgt(EvtObj(e)).style.background='#FFFFFF'; } function cs_click(e) { updobj.value=calvalarr[evtTgt(EvtObj(e)).id.substring(1,evtTgt(EvtObj(e)).id.length)]; getObj('fc').style.display='none'; } var mn=new Array('Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентрябрь','Октябрь','Ноябрь','Декабрь'); var mnn=new Array('31','28','31','30','31','30','31','31','30','31','30','31'); var mnl=new Array('31','29','31','30','31','30','31','31','30','31','30','31'); var calvalarr=new Array(42); function f_cps(obj) { obj.style.background='#FFFFFF'; obj.style.font='10px Arial'; obj.style.color='#333333'; obj.style.textAlign='center'; obj.style.textDecoration='none'; obj.style.border='1px solid #606060'; obj.style.cursor='pointer'; } function f_cpps(obj) { obj.style.background='#C4D3EA'; obj.style.font='10px Arial'; obj.style.color='#FF9900'; obj.style.textAlign='center'; obj.style.textDecoration='line-through'; obj.style.border='1px solid #6487AE'; obj.style.cursor='default'; } function f_hds(obj) { obj.style.background='#FFF799'; obj.style.font='bold 10px Arial'; obj.style.color='#333333'; obj.style.textAlign='center'; obj.style.border='1px solid #6487AE'; obj.style.cursor='pointer'; } // day selected function prepcalendar ( hd, cm, cy ) { now=new Date(); sd=now.getDate(); td=new Date(); td.setDate(1); td.setFullYear(cy); td.setMonth(cm); cd=td.getDay(); if (cd==0)cd=6; else cd--; getObj('mns').innerHTML=mn[cm]+ ' ' + cy; marr=((cy%4)==0)?mnl:mnn; for(var d=1;d<=42;d++) { f_cps ( getObj ( 'v' + parseInt ( d ) ) ); if ( ( d >= (cd -(-1) ) ) && ( d<=cd-(-marr[cm]) ) ) { getObj('v'+parseInt(d)).onmouseover=cs_over; getObj('v'+parseInt(d)).onmouseout=cs_out; getObj('v'+parseInt(d)).onclick=cs_click; // if today if (sccm == cm && sccd == (d-cd) && sccy == cy) getObj('v'+parseInt(d)).style.color='#FF9900'; getObj('v'+parseInt(d)).innerHTML=d-cd; calvalarr[d]=addnull(d-cd,cm-(-1),cy); } else { getObj('v'+d).innerHTML=' '; getObj('v'+parseInt(d)).onmouseover=null; getObj('v'+parseInt(d)).onmouseout=null; getObj('v'+parseInt(d)).onclick=null; getObj('v'+parseInt(d)).style.cursor='default'; } } } prepcalendar('',ccm,ccy); function caddm() { marr=((ccy%4)==0)?mnl:mnn; ccm+=1; if (ccm>=12) { ccm=0; ccy++; } prepcalendar('',ccm,ccy); } function csubm() { marr=((ccy%4)==0)?mnl:mnn; ccm-=1; if (ccm<0) { ccm=11; ccy--; } prepcalendar('',ccm,ccy); } function today() { updobj.value=addnull(now.getDate(),now.getMonth()+1,now.getFullYear()); getObj('fc').style.display='none'; prepcalendar('',sccm,sccy); } function addnull(d,m,y) { var d0='',m0=''; if (d<10)d0='0'; if (m<10)m0='0'; return ''+d0+d+'.'+m0+m+'.'+y; } |
Этот код вообще работает?
Подобающе нельзя было оформить? Чтобы код работал. |
Код работает. Это файл .js, скачанный вот отсюда
|
Объясните в чем собственно проблема?)
Что вы не можете понять или сделать? |
Календарь работает так: при нажатии на поле (фильтр компаний по дате)
выскакивает этот календарь. При нажатии на дату в календаре должны отсортироваться только те компании, которые были созданы в выбранный из календаря день. Так вот проблема в том, что на iPad и в браузере Chrome при нажатии по дате из текущено месяца, сортировка срабатывает сразу, а если выбрать любой другой (не текущий месяц), то срабатывает только со второго нажатия по дате (хотя в поле выбранная дата появляется после первого нажатия) А браузере Firefox все месяцы срабатывают с первого раза... Сделать нужно так, чтобы вне зависимости от браузера и месяца (текущего или нет) срабатывала сортировка с первого нажатия на дату |
Часовой пояс GMT +3, время: 21:35. |