Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832

    [JS] Script DOM che in IE smette di funzionare senza notifiche di errore

    ho uno scritp che deve aggiungere delle righe in una tabella in modo condizionale (NO, non è il solito discorso).
    qui ho una tabella con un numero fisso di RIGHE. raggiunta l'ultima cella, se serve, al press del tasto enter devono essere aggiunte altre righe.
    funziona bene con FF.
    con IE raggiunto il limite di 10 righe, ne aggiunge altre 2 -come previsto- e poi lo script smette di funzionare.
    se mi posiziono nell'ultima cella e provo a premere enter, NON fa più nulla
    perchè??
    codice:
    codice:
    function evalHP(e, val, id){
    	var characterCode 
    
    	if(e && e.which){ 
    		e = e
    		characterCode = e.which 
    		}
    	else{
    		e = window.event
    		characterCode = e.keyCode //IE
    		}
    
    	if(characterCode == 13){ //ENTER
    		
    		var el = document.getElementById(id);
    		el.style.fontWeight = 'bold';
    		el.style.backgroundColor = 'transparent';
    		el.style.textAlign = 'center';
    		el.style.border = '0';
    		el.style.color = '#FF0000';
    		r = id.split('_');
    		let = r[1];
    		n_i = r[3];
    		if(n_i >= 10){		//se sei alla 10° riga, creano altre 2
    			for(i=1;i<3; i++){	
    				var colSX = document.createElement("TD");
    				nid= parseInt(r[3])+i;
    				colSX.setAttribute('id',"td_"+let+"_"+r[2]+"_"+nid);
    				colSX.style.fontSize ='8pt';
    				var colDX = document.createElement("TD");
    				var inp = document.createElement("INPUT");
    				inp.style.border = '0px';
    				inp.setAttribute('size', 8);
    				id_inp = 'inp_'+let+"_"+r[2]+"_"+nid;
    				inp.setAttribute('id',id_inp);				
    				if(bro == 'moz'){
    					inp.setAttribute('class','piccolo');			
    					inp.setAttribute('onkeypress', 'evalHP(event, this.value, this.id)');
    					}
    				if(bro == 'ie'){
    					inp.setAttribute('className','piccolo');
    					inp.onkeydown = 'evalHP(event, this.value, this.id)';		
    					}					
    				colDX.appendChild(inp);
    		 		var riga = document.createElement("TR");
    		
    				riga.appendChild(colSX);		
    				riga.appendChild(colDX);
    				document.getElementById('tbd_'+let).appendChild(riga);
    				document.getElementById('tbl_'+let).appendChild(document.getElementById('tbd_'+let));				
    				}
    			}
    		nprev = parseInt(r[3])-1;
    		nnext = parseInt(r[3])+1;
    		nNnext = parseInt(r[3])+2;
    		id_next = 'inp_'+let+"_"+r[2]+"_"+nnext;
    		id_Nnext = 'inp_'+let+"_"+r[2]+"_"+nNnext;
    		id_nprev = 'inp_'+let+"_"+r[2]+"_"+nprev; 
    		id_td = 'td_'+let+"_"+r[2]+"_"+n_i;
    		if(document.getElementById(id_nprev))num = document.getElementById(id_nprev).value;
    		else num = document.getElementById("MAX_"+id_nprev).value;
    		if(!document.getElementById("ck_pf"+let).checked){
    			document.getElementById(id_next).value = num - val;
    			document.getElementById("evalHP_"+let).value = num - val;
    			if(bro == 'moz') document.getElementById(id_td).innerHTML = "<font style='font-size: 8pt;'>Danni</font>";
    			if(bro == 'ie'){
    				var otxt = document.createTextNode("Danni");
    				document.getElementById(id_td).appendChild(otxt);
    				}					
    			} 
    		else{
    			document.getElementById(id_next).value = parseInt(num) + parseInt(val);
    			document.getElementById(id).style.color = '#339966';
    			document.getElementById("evalHP_"+let).value = parseInt(num) + parseInt(val);
    			if(bro == 'moz') document.getElementById(id_td).innerHTML = "<font style='font-size: 8pt;' />Cura</font>";
    			if(bro == 'ie'){
    				var otxt = document.createTextNode("Cura");
    				document.getElementById(id_td).appendChild(otxt);
    				}				
    			document.getElementById("ck_pf"+let).checked = false;		
    		}
    
    		document.getElementById(id_next).style.textAlign = 'center';
    		document.getElementById(id_next).style.border = '0';
    		document.getElementById(id_Nnext).focus();
    		return false
    		}
    	else{
    		return true
    		}
    ...
    non rileva manco più la pressione su enter!

  2. #2
    Senti, tentar non 'cuoce'.
    Prova:
    codice:
    	if(bro == 'ie'){
    		inp.setAttribute('className','piccolo');
    		inp.onkeydown = function(event){evalHP(event, document.getElementById(id_inp).value, id_inp);};		
    	}
    Se non va, vabb&egrave;, ho scherzato!

    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  3. #3
    Utente di HTML.it L'avatar di lyllo
    Registrato dal
    Apr 2001
    Messaggi
    832
    grazie, ma così neppure scrive l'onekeypress nel campo

    questo è quello che stampo dentro una textarea al momento del click sull'ultima riga "buona" al momento in cui va a creare le righe nuove che danno problemi:

    codice:
    <TD id=td_A_0_10></TD>
    <TD align=right><INPUT style="BORDER-BOTTOM: 0px; TEXT-ALIGN: center; BORDER-LEFT: 0px; BACKGROUND-COLOR: transparent; COLOR: #ff0000; BORDER-TOP: 0px; FONT-WEIGHT: bold; BORDER-RIGHT: 0px" onkeydown="evalHP(event, this.value, this.id)" id=inp_A_0_10 class=piccolo value=1 size=8></TD></TR>
    <TR>
    <TD id=td_A_0_11></TD>
    <TD align=right><INPUT style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" onkeydown=ciccio() id=inp_A_0_11 class=piccolo size=8></TD></TR>
    <TR>
    <TD id=td_A_0_12></TD>
    <TD align=right><INPUT style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" onkeydown=ciccio() id=inp_A_0_12 class=piccolo size=8></TD></TR>
    non capisco come mai non vengano messe le virgolette attorno al nome della funzione (ora chiamata ciccio per essere facilmente individuata)

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 © 2025 vBulletin Solutions, Inc. All rights reserved.