Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    957

    Aggiungere righe - Problema IE

    Ciao a tutti,
    ho un problema non da poco... anche perchè su FF funziona , su IE no.
    Devo creare un pulsante che aggiunge una riga su una tabella e che questa riga al suo interno abbia dei campi INPUT.

    Una riga stardard di questa tabella è:

    codice:
       <tr>
          <td>1a Mansione: </td>
          <td><select name="sel_qualifica_1" onchange="document.forms[0].qualifica_1.value=this.value;">
          </select><input type="text" name="qualifica_1" /></td>
          <td>Numero:
             <input name="numero_1" type="text" value="0" maxlength="3" size="4"/>(0 = non limitato) </td>
       </tr>
       <tr id="ultima_riga">....
    Come vedete nella riga c'è un SELECT che va a cambiare un TEXTBOX in base alla selezione.

    La funzione JS per aggiungere il pulsante è:
    codice:
    function createRow(obj){
    		
    		
    		var curr_riga=obj.parentNode.parentNode;
    		var curr_tab=curr_riga.parentNode;
    		num++;
    		// crea elementi
    		var textNode1 = document.createTextNode(num+"a Mansione: ");
    		var textNode2 = document.createTextNode("Numero: ");
    		var textNode3 = document.createTextNode(" (0 = non limitato)");
    		var numero=document.createElement("INPUT");
    		var qual=document.createElement("INPUT");
    		var selec=document.createElement("SELECT");
    		var riga1=document.createElement("TR");
    		var cella1=document.createElement("TD");
    		var cella2=document.createElement("TD");
    		var cella3=document.createElement("TD");
    
    		// setta attributi
    		numero.setAttribute("name","numero_"+num);
    		numero.setAttribute("type","text");
    		numero.setAttribute("value","0");
    		numero.setAttribute("maxlength","3");
    		numero.setAttribute("size","4");
    		qual.setAttribute("name","qualifica_"+num);
    		selec.setAttribute("name","sel_qualifica_"+num);
    		qual.setAttribute("type","text");
    		selec.setAttribute("onchange","document.forms[0].qualifica_"+num+".value=this.value;");
    
    		// crea lista nel select
    		for(i=0;i<qualifiche.length;i++){
    			opt=document.createElement("OPTION");
    			txt=document.createTextNode(qualifiche[i]);
    			opt.setAttribute("value",qualifiche[i]);
    			opt.appendChild(txt);
    			selec.appendChild(opt);
    		}
    		
    		// appendi al relativo padre
    		cella1.appendChild(textNode1);
    		cella2.appendChild(selec);
    		cella2.appendChild(qual);
    		cella3.appendChild(textNode2);
    		cella3.appendChild(numero);
    		cella3.appendChild(textNode3);
    		riga1.appendChild(cella1);
    		riga1.appendChild(cella2);
    		riga1.appendChild(cella3);
    		curr_tab.insertBefore(riga1,curr_riga);
    }
    C'è un pulsante quindi che richiama questa funzione che crea la riga nella tabella.

    Il mio problema è che su FF tutto va alla grande, su IE la riga viene creata, ma non va il codice onchange del SELECT creato.
    C'è un motivo legato a IE o è un errore nel mio codice?

    Grazie a chi avrà la pazienza di aiutarmi !

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    ie non funziona bene con i setAttribute
    selec.onchange = function() {
    document.forms[0].elements["qualifica_"+num].value=this.value;
    }
    resta da controllare se num e this vengono risolti correttamente

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    957
    mi pare che ie non funzioni bene con niente
    Ma tu dicevi mettere la funzione come attributo onchange o inserire una funzione fissa?

    grazie

  4. #4
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    se il codice che ho scritto prima va bene ... ok
    se hai problemi prova con una funzione esterna, ma devi passare dei parametri

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    957
    ho risolto facendo un array di riferimento agli oggetti INPUT (qualfiica_#), quindi la tua funzione rimane ma non si riferisce con un form[0].elements["nome"] bensì tramite l'array.
    Non so se ho sbagliato io, ma elements accetta solo indici numerici.

    Grazie mille della dritta sulla funzione.
    ciao!

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.