Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    277

    Checkbox dinamici con Ajax

    Ciao a tutti.

    Io avrei questa necessità:

    Ho una select dove ho una lista di tabelle: A,B,C.

    La tabella A ha campi:
    A1, A2
    la B:
    B1, B2, B3
    la C:
    C1, C2, C4

    Vorrei che all onclick sulla select in base alla tabella selezionata si valorizzassero se selziono A allora i check box A1, A2 se seleziono B i checkbox B1, B2.

    Il tutto all'onclick della select sulla tabella.

    E' possibile fare questo?
    Sono molto inesperto, quindi tutti i tipi di aiuto sono graditissimi, grazie mille!!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    277
    Questo il codice chiamante:

    codice:
    <script type="text/javascript" src="js/ajax.js"></script>
    <script type="text/javascript">
    
    var ajax2 = new Array();
    function getfieldslist(sel)
    {
    	var campo = sel.options[sel.selectedIndex].value;
    	document.getElementById('fields').options.length = 0;	// Empty city select box
    	if(campo.length>0){
    		var index = ajax2.length;
    		ajax2[index] = new sack();
    		
    		ajax2[index].requestFile = 'getfield.php?field='+campo;	// Specifying which file to get
    		ajax2[index].onCompletion = function(){ createfields(index) };	// Specify function that will be executed after file has been found
    		ajax2[index].runAJAX();		// Execute AJAX function
    	}
    }
    
    function createfields(index)
    {
    	var obj = document.getElementById('fields');
    	eval(ajax2[index].response);	// Executing the response from Ajax as Javascript code	
    }
    </script>
    <select id="dhtmlgoodies_country" name="dhtmlgoodies_country" onchange="getfieldslist(this)">
    			<option value="">Select a table</option>
    			<option value="an_le">an_le</option>
    			<option value="data_mov_row_pn">data_mov_row_pn</option>
    			<option value="an_shares">an_shares</option>
    		</select>
    
    		 <div id="fields"></div>

    mentre il getfiled.php :

    codice:
    if(isset($_GET['field'])){
    
          $qy = "select column_name from cf_sys_table_row
                 where table_name = '$_GET[field]'";
           $result =execute_qy_err_detail_result($qy, $MyConn);
           $i = 0;  
           while($Values = mysql_fetch_array($result))
            {
            ?>
            var obj = getObjectRefByID(portfolio_box);  
            var cbx = document.createElement("input");  
            cbx.type = "checkbox";  
            cbx.id = "myCBX";  
            obj.appendChild(cbx);  
            cbx.setAttribute("checked","checked");
    
              <?php
            }
           exit;
      
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    277
    Nessun aiuto?

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Metti il link alla pagina pubblica, cosi da non dover ricreare il tutto e avere qualcosa su cui lavorare.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    277
    Si, è vero hai pienamente ragione.

    Ho postato il primo script su:

    http://www.ssp-solution.com/test/che.../prefilter.php

    ed il secondo (chiamato dal primo) su:

    http://www.ssp-solution.com/test/che.../getfields.php

    Ti ringrazio moltissimissimo per l'aiuto!!!!!!

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Come non detto, nei tuoi post precedenti non si capisce cosa vuoi fare (confermato dal fatto che non hai avuto risposte) con le pagine pensavo di intuire qualcosa di + invece e peggio, oltretutto se provi a richiamare la pagina getfield.php?field=data_mov_row_pn ti da un errore Warning: Invalid argument supplied for foreach() in /home/user1323/public_html/test/checkboxtest/getfield.php on line 13 se invece la richiami cosi getfield.php?field=an_shares
    stampa questo
    var obj = getObjectRefByID(portfolio_box); var cbx = document.createElement("input"); cbx.type = "checkbox"; cbx.id = "shares_cod "; obj.appendChild(cbx); cbx.setAttribute("checked","checked"); var obj = getObjectRefByID(portfolio_box); var cbx = document.createElement("input"); cbx.type = "checkbox"; cbx.id = "sheres_desc "; obj.appendChild(cbx); cbx.setAttribute("checked","checked"); var obj = getObjectRefByID(portfolio_box); var cbx = document.createElement("input"); cbx.type = "checkbox"; cbx.id = "sheres_opt "; obj.appendChild(cbx); cbx.setAttribute("checked","checked");
    Troppa confusione, fai chiarezza come funziona il php come funziona ajax come funziona il javascript se non hai già letto le guide di html.it ti consiglio di farlo guide javascript
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    277
    Scusa, il problema su getfield.php era dovuto al fatto per postare lo script di test che sono passato da query mysql a array scritti, e non avevo inserito le tre option della select, ora funziona.

    Per capire meglio:

    prefilter.php : con una select scelgo un codice tabella.

    All'onchenge sulla select viene attivata la function getfieldlist:

    codice:
    function getfieldslist(sel)
    {
    	var campo = sel.options[sel.selectedIndex].value;
    	document.getElementById('fields').options.length = 0;	// Empty tableselect box
    	if(campo.length>0){
    		var index = ajax2.length;
    		ajax2[index] = new sack();
    		
    		ajax2[index].requestFile = 'getfield.php?field='+campo;	// Specifying which file to get
    		ajax2[index].onCompletion = function(){ createfields(index) };	// Specify function that will be executed after file has been found
    		ajax2[index].runAJAX();		// Execute AJAX function
    	}
    }
    che richiama la createfields:

    codice:
    function createfields(index)
    {
    	var obj = document.getElementById('fields');
    	eval(ajax2[index].response);	// Executing the response from Ajax as Javascript code	
    }
    La getfieldlist invia una richiesta passando dal getfield.php. Questo (lascia perdere il fatto che sia php, potrebbe essere anche solo html) DOVREBBE (ma purtroppo non lo fa) rispondere creando degli elementi di tipo checkbox con id e nome legati all'argomento passato in get.

    Nell'exempio che mi hai postato, se passi an_shares dovrebbe creare tre checkbox con id e nome: shares_cod, shares_desc, shares_opt.

    Non so se così ti può risultare più chiaro, altrimenti dimmi per favore cosa non è chiaro.

    Grazie infinite.

  8. #8
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    L'unico consiglio che posso darti, essendo un operazione complessa crea le checkbox fisicamente <input type="checkbox".../> non dinamicamente col javascript (se ho capito bene) il javascript e ajax non digeriscono (troppo lungo spiegarlo) che in una pagina caricata vi sia al proprio interno javascript.
    Se cosi non risolvi e non vuoi studiarti le guide che t'ho consigliato attendi qualcuno + eseperto che possa risolverti il problema.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    277
    La creazione dinamica della checkbox è necessaria proprio perché solo così riesco a creare, in funzione della tabella scelta, l'elenco dei suoi campi.

    Non so se è chiara la funzionalità, amgari ci sono altri modi per risolvere il problema.

    Ciao e grazie

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    277
    Qualcosa di simile l'ho trovata qui:
    codice:
    # <html>
    #    <head>
    #    <script language="Javascript">
    #  
    #      function append()
    #      {
    #         var i = parseInt(document.getElementById( "iCheckboxes" ).value);
    #         var cb = document.createElement( "input" );
    #         cb.type = "checkbox";
    #         cb.id = "id"+i;
    #         cb.name = "name"+i;
    #         cb.checked = true;
    #         var text = document.createTextNode( "checkbox" );
    #         document.getElementById( 'append' ).appendChild( text );
    #         document.getElementById( 'append' ).appendChild( cb );
    #         document.getElementById( "iCheckboxes" ).value = parseInt(document.getElementById( "iCheckboxes" ).value) + 1;
    #      }
    #  
    #    </script>
    #    </head>
    # <body>
    #    
    
    click the button below</p>
    #    <form action="http://localhost/test.php" name="form" id="form" method="post">
    #    <div id="append" name="append">Append here</div>
    #    <input type="hidden" value="0" name="iCheckboxes" id="iCheckboxes">
    #    <input type="button" value="append" onclick="javascript:append()" />
    #    <input type="submit" value="submit" />
    #    </form>
    # </body>
    # </html>
    Dovrei rendere tutto asincrono, ovvero fare il tutto all'onclick della select

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.