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

    come associare un evento ad un nuovo nodo

    Salve a tutti, ho un problema con attachEvent... ho una funzione che aggiunge righe dinamicamente ad una tabella i cui elementi sono campi di testo, la funzione crea correttamente la riga, però ad un campo volevo associare l'evento onchange ma con attach event non ci riesco... probalmente sbaglio qualcosa potete darmi una mano?
    La funzione javascript si trova in una jsp.

    function accoda(){

    if(document.createElement && document.getElementById && document.getElementsByTagName) {

    // crea elementi
    var oTr=document.createElement("TR");
    var oTd1=document.createElement("TD");
    var oTd2=document.createElement("TD");
    var oTd3=document.createElement("TD");
    var oTd4=document.createElement("TD");
    var oTd5=document.createElement("TD");
    var oField1=document.createElement("SELECT");
    var oField2=document.createElement("INPUT");
    var oField3=document.createElement("INPUT");
    var oField4=document.createElement("INPUT");
    var oField5=document.createElement("INPUT");

    // setta attributi
    oField1.setAttribute("name","descrProdotto");
    oField1.setAttribute("id","elemento");

    <%


    for ( int i=0;i<prodotti.size();i++) {%>

    <%it.eni.registrifiscali.registri.bo.ProdottiBO prova=(ProdottiBO)prodotti.get(i);%>

    var oField=document.createElement("option");


    var testo=document.createTextNode("<%=prova.getDescrPr odotto()%>");
    oField.appendChild(testo);

    oField1.appendChild(oField);

    <%}%>



    oField2.setAttribute("type","text");
    oField2.setAttribute("id","elemento");
    oField3.setAttribute("type","text");
    oField3.setAttribute("id","elemento");
    oField4.setAttribute("type","text");
    oField4.setAttribute("id","elemento");

    oField5.setAttribute("type","text");
    oField5.setAttribute("id","elemento");

    oField4.attachEvent("onclick",function(){modifica( oField4.value)});

    // appendi al relativo padre
    oTd1.appendChild(oField1);

    //oTd1.appendChild(oField);
    oTd2.appendChild(oField2);

    oTd3.appendChild(oField3);
    oTd4.appendChild(oField4);
    oTd5.appendChild(oField5);

    oTr.appendChild(oTd1);
    oTr.appendChild(oTd2);
    oTr.appendChild(oTd3);
    oTr.appendChild(oTd4);
    oTr.appendChild(oTd5);

    document.getElementById('tab3.3').getElementsByTag Name('TBODY')[0].appendChild(oTr);

    var prova=(oField4.value);
    alert(prova);
    numRighe++;

    alert(numRighe);


    }
    }

  2. #2
    non vorrei dire, ma dov'è che setteresti l'evento?
    P.S. puoi usare il tag PHP di BBcode per evidenziare il testo quando posti del codice

  3. #3
    L'evento lo setto in questo modo:


    Codice PHP:
    oField4.attachEvent("onclick",function(){modifica(oField4.value)}); 

  4. #4
    e ci credo che non funziona, è onclick non onchange...
    in ogni caso puoi provare con le sitassi DOM1

    oField4.onchange = function(){/*.. DO ..*/}

    Se, invece, ci tieni a fare una funzione multi browser ti conviene usare una libreria che permetta di settare l'evento con una funzione specifica (Ad esempio Prototype JS usa $(oField4).observe('click', funciton(){/* ... */}); e funziona su tutti i browser).

  5. #5
    uhmm onclick è solo dovuto a tutti i possibili cambiamenti che ho fatto....
    ma comunque anche con onchange non funziona....

    in questo momento l'ho modificata così:







    Codice PHP:
    var  numRighe=1;
    function  
    accoda(){

        if(
    document.createElement && document.getElementById && document.getElementsByTagName) {        

    // crea elementi
            
    var oTr=document.createElement("TR");
            var 
    oTd1=document.createElement("TD");
            var 
    oTd2=document.createElement("TD");
            var 
    oTd3=document.createElement("TD");
            var 
    oTd4=document.createElement("TD");
            var 
    oTd5=document.createElement("TD");        
            var 
    oField1=document.createElement("SELECT");      
            var 
    oField2=document.createElement("INPUT");
            var 
    oField3=document.createElement("INPUT");
            var 
    oField4=document.createElement("INPUT");
            var 
    oField5=document.createElement("INPUT");
            
    // setta attributi
            
    oField1.setAttribute("name","descrProdotto");
            
    oField1.setAttribute("id","elemento");

    <%


    for ( 
    int i=0;i<prodotti.size();i++) {%>

    <%
    it.eni.registrifiscali.registri.bo.ProdottiBO prova=(ProdottiBO)prodotti.get(i);%>

     var 
    oField=document.createElement("option");


    var 
    testo=document.createTextNode("<%=prova.getDescrProdotto()%>");
            
    oField.appendChild(testo);
       
            
    oField1.appendChild(oField);

    <%}%>

      
           
            
    oField2.setAttribute("type","text");
            
    oField2.setAttribute("id","elemento");
            
    oField3.setAttribute("type","text");
            
    oField3.setAttribute("id","elemento");
            
    oField4.setAttribute("type","text");
            
    oField4.setAttribute("id","elemento");
            
    oField4.setAttribute("name","kg");
            
    oField4.setAttribute("value",0);

            
    oField5.setAttribute("type","text");
            
    oField5.setAttribute("id","elemento");


    var 
    prova=(oField4.value);

    oField4.onchange=function(){modifica2(prova)};




            
    // appendi al relativo padre
            
    oTd1.appendChild(oField1);
            
            
    //oTd1.appendChild(oField);
            
    oTd2.appendChild(oField2);
           
            
    oTd3.appendChild(oField3);
            
    oTd4.appendChild(oField4);
            
    oTd5.appendChild(oField5);    

            
    oTr.appendChild(oTd1);
            
    oTr.appendChild(oTd2);
            
    oTr.appendChild(oTd3);
            
    oTr.appendChild(oTd4);
            
    oTr.appendChild(oTd5);
            
    document.getElementById('tab3.3').getElementsByTagName('TBODY')[0].appendChild(oTr);


    var 
    prova=(oField4.value);
    alert(prova);
    numRighe++;

    alert(numRighe);
          
            
        }
    }


    function 
    modifica2(int){
    if((
    document.getElementById('tab3.3').getElementsByTagName('option').value)=='1'){
    document.getElementById('tab3.3').getElementById('smaltimentoOl').value=toFloat(document.getElementById('kg').value);
    Calcola();

    si accettano suggerimenti...

  6. #6
    ma se è un input text ti conviene usare onKeyUp.

  7. #7
    Arrivata ad uno stato di esasperazione pure ho provato anche con onkeyup ma comunque non funziona .

  8. #8
    scusa, se non te l'ho chiesto, ma la procedura ti crea la tabella?

  9. #9
    Si la tabella viene creata perfettamente, tuttavia qualsia funzione inserisca legata ad un evento non va.

  10. #10
    Ho trovato l'errore... ora lo script funziona correttamente.
    Allego il codice nel caso possa essere d'aiuto a qualcuno


    Codice PHP:

    <script>
    var  
    numRighe=1;
    function  
    accoda(){

        if(
    document.createElement && document.getElementById && document.getElementsByTagName) {        

    // crea elementi
            
    var oTr=document.createElement("TR");
            var 
    oTd1=document.createElement("TD");
            var 
    oTd2=document.createElement("TD");
            var 
    oTd3=document.createElement("TD");
            var 
    oTd4=document.createElement("TD");
            var 
    oTd5=document.createElement("TD");
           
            var 
    oField1=document.createElement("SELECT");      
            var 
    oField2=document.createElement("INPUT");
            var 
    oField3=document.createElement("INPUT");
            var 
    oField4=document.createElement("INPUT");
            var 
    oField5=document.createElement("INPUT");

    // setta attributi
            
    oField1.setAttribute("name","descrProdotto"+numRighe);
            
    oField1.setAttribute("id","select2");

    <%
    for ( 
    int i=0;i<prodotti.size();i++) {%>

    <%
    it.eni.registrifiscali.registri.bo.ProdottiBO prova=(ProdottiBO)prodotti.get(i);%>

     var 
    oField=document.createElement("option");

     var 
    testo=document.createTextNode("<%=prova.getDescrProdotto()%>");
         
            
    oField.appendChild(testo);  
            
    oField.setAttribute("name","lista"); 
            
    oField.setAttribute("value",testo);
            
    oField.setAttribute("id","option");
            
    oField1.appendChild(oField);

    <%}%> 
        
            
    oField2.setAttribute("type","text"+numRighe);
            
    oField2.setAttribute("id","elemento"+numRighe);
            
    oField3.setAttribute("type","text"+numRighe);
            
    oField3.setAttribute("id","elemento"+numRighe);
            
    oField4.setAttribute("type","text"+numRighe);
            
    oField4.setAttribute("id","elemento1"+numRighe);
            
    oField4.setAttribute("name","kg"+numRighe);
            
    oField4.setAttribute("value",0);
            
    oField5.setAttribute("type","text"+numRighe);
            
    oField5.setAttribute("id","elemento"+numRighe);

    //associo al campo di teso l'evento onblur
         
    if(oField4.attachEventoField4.attachEvent("onblur",function(){mod2(oField4.value);})
            else if(
    oField4.addEventListeneroField4.addEventListener("blur",function(){mod2(oField4.value);},false);

            
    // appendi al relativo padre
            
    oTd1.appendChild(oField1);        
            
    oTd2.appendChild(oField2);       
            
    oTd3.appendChild(oField3);
            
    oTd4.appendChild(oField4);
            
    oTd5.appendChild(oField5);    
           
            
    //appendo le colonne alla riga
            
    oTr.appendChild(oTd1);
            
    oTr.appendChild(oTd2);
            
    oTr.appendChild(oTd3);
            
    oTr.appendChild(oTd4);
            
    oTr.appendChild(oTd5);
             
    document.getElementById('tab3.3').getElementsByTagName('TBODY')[0].appendChild(oTr);
    numRighe++;  
            
        }
    }

    function 
    mod2(e){ 



    var 
    d=document.getElementById('select2').selectedIndex;
    alert(d);
    if((
    document.getElementById('select2').selectedIndex)==0){
    document.getElementById('smaltimentoOl').value=e;
    Calcola();
    }

    if((
    document.getElementById('select2').selectedIndex)==1){
    document.getElementById('smaltimentoProdch').value=e;
    Calcola();
    }

    if((
    document.getElementById('select2').selectedIndex)==2){
    document.getElementById('smaltimentoAcido_solf').value=e;
    Calcola();}

    if((
    document.getElementById('select2').selectedIndex)==3){
    document.getElementById('smaltimentoAddol').value=e;
    Calcola();}

    if((
    document.getElementById('select2').selectedIndex)==4){
    document.getElementById('smaltimentoMixAlchilbenz').value=e;
    Calcola();}

    if((
    document.getElementById('select2').value)==5){
    document.getElementById('smaltimentoOlRigen').value=e;
    Calcola();}



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.