Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    19

    Campi dinamici con popup

    Ho un piccolo problema che non riesco a risolvere.
    una volta che creo i campi ho creato una procedura che mi apre un popup dove carico dei prodotti da un database.
    una volta selezionato il prodotto devo riportare i dati nei campi creati.
    ma non so come vengono nominati i campi o meglio.
    Se creo 3 campi nuovi, devo risalire a quale dei 3 campi ho cliccato per aprire il popup.
    Io passo i parametri in questo modo :
    window.opener.document.invia.cod4.value = symbol3;

    ma se non conosco il nome non posso assegnarlo.


    se passo la variabile num mi da l'ultimo inserito.
    se io creo 4 caselle num mi darà sempre 4.
    se io volessi cliccare per esempio sulla numero 2, voglio sapere quale input mi ha creato l'evento, quindi in questo caso mi dovrebbe restituire il numero 2 o il nome del campo 2.
    Ho provato a creare anche un input nascosto dove ho dato il valore num quindi progressivo, ma non riesco a leggerne il contenuto.

    if( oField3.attachEvent ){
    oField3.attachEvent('onclick', 'showList2');
    } else {



    alert("ciao " +num );

    oField3.setAttribute('onclick', 'window.open("dett_fatture.php?a1="+document.modul o.prodotto.value , "list", "width=650,height=250 ,scrollbars=yes");');

    }

    Se con oField2.setAttribute("name","prodotto"+num); riesco a dare il nome a quel campo, c'è qualche modo per andare a leggerlo?

  2. #2
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530
    Li crei "come" questi campi, cosa intendi, lato-server in PHP o lato-client che l' utente clicca e ne compaiono altri senza ri-comunicare col server? O entrambi?
    E poi cosa contengono questi campi, nomi/dati degli articoli o sono vuoti per ricevere testo dall' utente ? Pare dal pop-up, invece; ok, questo quando si apre, al caricamento della pagina o quando l' utente clicca da qualche parte?

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    19
    grazie per l'interessamento
    allora
    la pagina principale contiene semplicemente gli input dinamici dove l'utente non deve inserire nulla ma semplicemente cliccandoci sopra mi apre un popup dove o inserito un motore di ricerca che punta ad un Db MYSQL e fino a qui tutto ok.
    Una volta trovato il dato nel db clicco su un pulsante che mi riporta i dati negli input della pagina principale (e fino a qui tutto ok).
    Il mio problema è dato dal fatto che se l'utente non clicca sull'ultimo input creato io non riesco a stabilire esattamente in quale devo riportare i dati.

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    vedi qui per uno dei modi per passare num
    http://forum.html.it/forum/showthrea...0#post13696720

    ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    19
    grazie per il sugerimento, ma quello lo avevo già fatto.
    A me serve "semplicemente" sapere il numero di riga che ha scattenato l'evento onclick.
    Se uso la var num mi indica il numero totale ma non so se ho cliccato sul primo o sul secondo.

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    prova, perche' non e' cosi'

    ciao

  7. #7
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530
    Cioè te, partendo da una serie di INPUT che non hanno un Kaiser di niente, niente NAME, niente ID e che magari non si sa' neppure quanti sono, vorresti uno SCRIPT che facesse qualcosa del genere ?!?? :
    codice:
    <html>
    <head><title>handling anonymous input's</title>
    <script type="text/javascript">
    
    var w;
    var lasciato=0;
    function apri(dove){
     campi[lasciato].style.backgroundColor='';
     lasciato=dove;
     campi[dove].style.backgroundColor='rgb(255, 255, 190)';
     var prevalue = campi[dove].value;
     campi[dove].value='loading ...'; 
    
    w = window.open('', 'same', 'top=0, left=0, width=500, height=300');
    
    w.document.open();
    w.document.writeln('<html><head><title>ricerca nel database<\/title>');
    w.document.writeln('<sc'+'ript type="text/javascript">');
    w.document.writeln('function riporta(){');
    w.document.writeln(' window.opener.campi[' + dove + '].value=document.getElementById("risulta").value;');
    w.document.writeln(' window.close();');
    w.document.writeln(' }');
    w.document.writeln('<\/sc'+'ript>');
    w.document.writeln('<\/head><body onunload="window.opener.campi[' + dove + '].style.backgroundColor=\\'\\';">');
    w.document.writeln('<input id="risulta" size="40" value="Il risultato della ricerca compaia qua">');
    w.document.writeln('<input value="riporta" type="button" onclick="riporta()">');
    w.document.write('<\/body><\/html>');
    w.document.close();
    w.focus();
    
     campi[dove].value=prevalue; 
     }
    
    
    var campi;
    function assegna(){
     var celle = document.getElementById("modulo").getElementsByTagName("td");
     var i=0; 
     for(var c=1; c<celle.length; c=c+2){
         celle[c].innerHTML='<input onclick="apri(' + i + ');">';
         i++;
     };
     campi = document.getElementById("modulo").getElementsByTagName("input");
    }
    
    </script>
    
    </head>
    <body bgcolor="gray" onload="assegna()" onunload="w.close()">
    
    <table border="1" align="center"><tr>
    <td>
    
    <table id="modulo" bgcolor="silver"><tr>
    <td>1</td><td><input></td>
    </tr><tr>
    <td>2</td><td><input></td>
    </tr><tr>
    <td>3</td><td><input></td>
    </tr><tr>
    <td>4</td><td><input></td>
    </tr><tr>
    <td>5</td><td><input></td>
    </tr>
    </table>
    
    </td></tr>
    </table>
    
    </body>
    </html>
    P.S. : Vedilo anche sostituendo la function assegna() con la seguente, che però rimane incompatibile con Internet Explorer:
    codice:
    var campi;
    function assegna(){
     campi = document.getElementById("modulo").getElementsByTagName("input");
     for(i=0; i<campi.length; i++){
    
         campi&#91;i&#93;.setAttribute("onclick", "apri(" + i + ");");
    
     };
     //alert(document.getElementById("modulo").innerHTML);
    }
    Concettualmente, assegnando dinamicamente la gestione dell' evento ONCLICK agli INPUT così come esistenti, sarebbe più adatta, ma occorre ricorrere a dei workaround per averla cross-browsers. Il ricorso ad .innerHTML in definitiva, ove non comporti "sconvolgimento" dei contenuti originali, può essere considerato come uno dei workaround possibili; magari un po' più "radicale"

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    19
    in effetti hai ragione

    non riesco ad inserirlo nella funzione window.open.
    con oField.setAttribute("onfocus","alert("+num+")");
    mi stampa il numero del recordo
    con


    oField.setAttribute('onclick', 'window.open("dett_fatture.php?a1=" + num , "list", "width=650,height=250 ,scrollbars=yes");');
    mi stampa il numero totale di input, dove sto sbagliando? ci sto sbattendo la testa tutto iil giorno.

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    19
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <html>
    <head>
    <title>aggiungi / rimuovi campi input</title>

    <SCRIPT LANGUAGE="JavaScript">
    <!--

    function showList(pagina) {

    sList = window.open(pagina, "list", "width=650,height=250 ,scrollbars=yes");
    }

    function remLink() {
    if (window.sList && !window.sList.closed)
    window.sList.opener = null;
    }

    // -->
    </SCRIPT>



    <script language="JavaScript" type="text/javascript">
    <!--
    var num=1;
    var num2;
    var num3;
    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 oField=document.createElement("INPUT");
    var oField2=document.createElement("INPUT");
    var oField3=document.createElement("INPUT");
    var oButt=document.createElement("INPUT");

    // setta attributi
    oField.setAttribute("type","text");

    oField.setAttribute("name","inv"+num);
    oField.setAttribute("value",+num+1);
    oField.setAttribute("size",3);

    oField2.setAttribute("type","text");
    oField2.setAttribute("name","prodotto"+num);
    oField3.setAttribute("type","text");

    oField3.setAttribute("name","prodotto2"+num);



    oButt.setAttribute("type","button");
    oButt.setAttribute("value","rimuovi");







    // setta gestore evento


    if( oField3.attachEvent ){
    oField3.attachEvent('onclick', 'showList2');
    } else {












    oField.setAttribute('onclick', 'window.open("dett_fatture.php?a1=" + num , "list", "width=650,height=250 ,scrollbars=yes");');



    }











    if(oButt.attachEvent) oButt.attachEvent('onclick',function(e){rimuovi(e) ;})
    else
    if(oButt.addEventListener) oButt.addEventListener('click',function(e){rimuovi (e);},false)

    // appendi al relativo padre
    oTd1.appendChild(oField);
    oTd1.appendChild(oField2);
    oTd1.appendChild(oField3);
    oTd2.appendChild(oButt);
    oTr.appendChild(oTd1);
    oTr.appendChild(oTd2);

    document.getElementById('tabella').getElementsByTa gName('TBODY')[0].appendChild(oTr);

    // incrementa variabile globale
    num++
    }
    }


    function rimuovi(e){
    if(document.removeChild && document.getElementById && document.getElementsByTagName) {
    if(!e) e=window.event;
    var srg=(e.target)?e.target:e.srcElement;

    // risali al tr del td che contiene l' elemento che ha scatenato l' evento
    while(srg.tagName!="TR"){srg=(srg.parentNode)?srg. parentNode:srg.parentElement}

    // riferimento al tbody
    var tb=document.getElementById('tabella').getElementsB yTagName('TBODY')[0];

    // rimuovi
    tb.removeChild(srg);
    }
    }





    //-->
    </script>
    </head>
    <body>

    <form name="modulo" method="Get">
    <input type="button" value="accoda" onclick="accoda()" /><input type="submit" />
    <table border="1" id="tabella">
    <tbody>
    <tr>
    <td><input type="text" name="prodotto"SIZE="3" value="1" />

    questo è il mio script

    <INPUT TYPE="text" NAME="stockBox1" VALUE='22'onClick="showList('dett_fatture.php?a1=' +document.invia.inv2.value)">


    <input type="text" value="qui" name="inv" onClick="showList('dett_fatture.php?a='+document.m odulo.prodotto.value,document.modulo.inv.value)">

    </td><td><input type="button" disabled="disabled" value="rimuovi" /></td>
    </tr>
    <tr>
    <td>

    </td>
    </tr>
    </tbody>
    </table>
    </form>
    </body>
    </html>

    Mi crea dinamicamente gli input e ogni volta che clicco su uno di essi mi apre il popup e mi ricarica i dati come ne tuo esempio.
    il mio problema è il seguente:
    Se il clicco sul 3 input come posso mandare la riga relativa al terzo input al popup?
    devo identificare quale input mi ha generato onclick
    grazie.

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    19
    Please Help!!



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.