Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    firefox OK IE NON OK

    ciao ragazzi,
    come al solito la mia ridotta conoscenza di JS mi porta al forum:
    Ho questo file js che crea un calendario (originalmente appariva solo quando cliccavi una textbox per inserirli la data. Lo modificato in maniera che appari sempre)
    codice:
    
    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) {
    
    	// MOD - inizio
    	/*
    	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';
    	*/
    	// MOD - fine
    }
    
    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;
    }
    	
    document.write('<table id="fc" style="position:absolute;border-collapse:collapse;background:#FFFFFF;border:1px solid #ABABAB;display:none" cellpadding=2>');
    document.write('<tr><td style="cursor:pointer" onclick="csubm()">[img]calendario/left.gif[/img]</td><td colspan=5 id="mns" align="center" style="font:bold 13px Arial"></td><td align="right" style="cursor:pointer" onclick="caddm()">[img]calendario/right.gif[/img]</td></tr>');
    document.write('<tr><td align=center style="background:#ABABAB;font:12px Arial">S</td><td align=center style="background:#ABABAB;font:12px Arial">M</td><td align=center style="background:#ABABAB;font:12px Arial">T</td><td align=center style="background:#ABABAB;font:12px Arial">W</td><td align=center style="background:#ABABAB;font:12px Arial">T</td><td align=center style="background:#ABABAB;font:12px Arial">F</td><td align=center style="background:#ABABAB;font:12px Arial">S</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:18px;height:18px"></td>');
    	}
    	document.write('</tr>');
    }
    document.write('</table>');
    
    document.all?document.attachEvent('onclick',checkClick):document.addEventListener('click',checkClick,false);
    
    
    // Calendar script
    var now = new Date;
    var sccm=now.getMonth();
    var sccy=now.getFullYear();
    var ccm=now.getMonth();
    var ccy=now.getFullYear();
    
    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='#FFCC66';
    }
    function cs_out(e) {
    	evtTgt(EvtObj(e)).style.background='#C4D3EA';
    }
    function cs_click(e) {
    	updobj.value=calvalarr[evtTgt(EvtObj(e)).id.substring(1,evtTgt(EvtObj(e)).id.length)];
    	
    	// MOD - inizio
    	//getObj('fc').style.display='none';
    	
    	document.mycal.submit();
    	// MOD - fine
    	
    }
    
    var mn=new Array('JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC');
    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='#C4D3EA';
    	obj.style.font='10px Arial';
    	obj.style.color='#333333';
    	obj.style.textAlign='center';
    	obj.style.textDecoration='none';
    	obj.style.border='1px solid #6487AE';
    	obj.style.cursor='pointer';
    }
    
    function f_cpps(obj) {
    	obj.style.background='#C4D3EA';
    	obj.style.font='10px Arial';
    	obj.style.color='#ABABAB';
    	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();
    	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]))) {
    			dip=((d-cd < sd)&&(cm==sccm)&&(cy==sccy));
    			htd=((hd!='')&&(d-cd==hd));
    			if (dip)
    				f_cpps(getObj('v'+parseInt(d)));
    			else if (htd)
    				f_hds(getObj('v'+parseInt(d)));
    			else
    				f_cps(getObj('v'+parseInt(d)));
    
    			getObj('v'+parseInt(d)).onmouseover=(dip)?null:cs_over;
    			getObj('v'+parseInt(d)).onmouseout=(dip)?null:cs_out;
    			getObj('v'+parseInt(d)).onclick=(dip)?null:cs_click;
    			
    			getObj('v'+parseInt(d)).innerHTML=d-cd;	
    			calvalarr[d]=''+(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)).style.cursor='default';
    			}
    	}
    }
    
    prepcalendar('',ccm,ccy);
    //MOD -inizio
    //getObj('fc'+cc).style.visibility='hidden';
    // MOD -fine
    function caddm() {
    	marr=((ccy%4)==0)?mnl:mnn;
    	
    	ccm+=1;
    	if (ccm>=12) {
    		ccm=0;
    		ccy++;
    	}
    	cdayf();
    	prepcalendar('',ccm,ccy);
    }
    
    function csubm() {
    	marr=((ccy%4)==0)?mnl:mnn;
    	
    	ccm-=1;
    	if (ccm<0) {
    		ccm=11;
    		ccy--;
    	}
    	cdayf();
    	prepcalendar('',ccm,ccy);
    }
    
    function cdayf() {
    if ((ccy>sccy)|((ccy==sccy)&&(ccm>=sccm)))
    	return;
    else {
    	ccy=sccy;
    	ccm=sccm;
    	cfd=scfd;
    	}
    }
    In firefox e tutto OK. Ma in IE il calendario si visualizza sempre nell'angolo superiore sinistro della schermata. Almeno che non clicchi sull textbox che genera il calendario e si sposta al suo posto sotto la textbox.
    Qualcuno sa perche non funziona in IE?

  2. #2
    nessuno che puo aiutarmi????????








    sto leggermento schizzando con questa cosa


  3. #3
    nessuno?

  4. #4
    non ho letto lo script ...ma c'entrano qualcosa i css?
    Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
    Inchinatevi difronte al Prof! Nacchio!

    A me pare che l'uomo vada avanti con la retromarcia

  5. #5
    puo essere ma non conosco bene i css di posizionamento. Li conosci tu? piu che altro mi va in tutti i browser apparte IE

  6. #6
    passa il codice per aprire il calendario, così lo provo
    Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
    Inchinatevi difronte al Prof! Nacchio!

    A me pare che l'uomo vada avanti con la retromarcia

  7. #7
    codice:
    <script language="javascript" type="text/javascript">
    		document.mycal.giorno.select();
    		lcs(document.mycal.giorno);
    </script>
    codice:
    <form name="mycal" id="mycal" action="*****.php" method="GET">
            <input name="day_post" id="giorno" type="text" value="dd/mm/yy" size=10 onfocus="this.select();lcs(this)">
    </form>
    calendar.js contiene la roba postata sopra
    codice:
    <script src="calendario/calendar.js"></script>

  8. #8
    quando fai le prova vedi che se sposti la textbox in giro per la schermata in firefox il calendario segue la textbox mentre in IE no rimane sempre nel angolo sopra a sinistra

  9. #9
    WinXpPro + IE6: funzia perfettamente

    se usi IE7 prova a fare la prova in una pagina vergine, così magari capisci se c'è qualche altro elemento nell'attuale pagina che gli dà noia
    Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
    Inchinatevi difronte al Prof! Nacchio!

    A me pare che l'uomo vada avanti con la retromarcia

  10. #10
    ho gia provato anche su pagine vergini. cmq si uso IE7

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.