Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    833

    Onchange a volte si a volte no

    Scusate il titolo.
    Di nuovo ciao, oggi mi trovo a non capire come mai una funzione (GetModuliProdotto) che dovrebbe popolare una select si comporta in modo diverso a seconda della situazione in cui viene chiamata.

    Nel primo caso (NON FUNZIONA) la select viene popolata da una funzione ajax esterna
    e quando faccio un change dalla select=server non popola la sottoselect modulidelprodotto.
    Es. funzione richiamata da select che e' stata popolata da una funzione ajax
    quindi senza opzioni
    codice:
    <select id="server" name="server" onchange="GetModuliProdotto(this);"> </select>
    Mentre quando la funzione la richiamo da una select che popolo direttamente, funziona:
    codice:
    <select id="server" name="server"  onchange="GetModuliProdotto(this);">
    <option value="">Scelta server:</option>
    <?php $sql3 = "select * from lib.sercl00f where sercli = '".$customerCLSCLI."' "; 
    $stmt3 = db2_exec($dbh, $sql3, array('cursor' => DB2_SCROLLABLE));
    while ($row3 = db2_fetch_array($stmt3)) 
    { 
    if(!$row3=="") { 
        $SERSRN = rtrim($row3[8]); 
    ...
    echo "<option value=\"$SERSRN\"> $SERSRN</option>"; 
    } 
    } 
    echo "</select>"
    Ora la funzione in questione e' questa, penso che il problema e' dovuto al fatto che dopo che e' stata popolata automaticamente la select si perda il sel.selectedIndex, ma non sono sicuro. Consigli, ciao

    codice:
    function GetModuliProdotto(sel)
    {
    	var server = sel.options[sel.selectedIndex].value;
    	document.getElementById('moduli').options.length = 0;	
    	if(server.length>0){
    		var index = ajax.length;
    		ajax[index] = new sack();
    		ajax[index].requestFile = 'GetModuliProdotto.php?server='+server;	
    		ajax[index].onCompletion = function(){ createModuli(index) };	
    		ajax[index].runAJAX();		
    	}
    }
    function createModuli(index)
    {
    	var obj = document.getElementById('moduli');
    	eval(ajax[index].response);	
    }

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non è ben chiaro l'operazione, cmq se la select generata perde i valori potrebbe essere un problema lato server (cioè della pagina php) se invece va "forse" (problema con IE) a volte si a volte no potrebbe essere un problema cache (cioè il browser mantiene i dati precedenti senza eseguire la nuova chiamata ajax) in tal caso spulcia qui ti segnalo anche che nelle discussioni utili del forum trovi altri riferimenti che potrebbero aiutarti.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    833
    Giustamente mi devo spiegare meglio. Nella pagina index.php ci sono es. due select
    server e modulidelprodotto, ora quando seleziono uno dei server la seconda select viene
    automaticamente popolata in base a alcuni dati del server.
    Fin qua tutto bene, perche' la prima select l'ho popolata io con un sql, pero' se faccio popolare la prima select dalla funzione ajax non riesce a riempire la seconda.

    Non e' un problema php o di cache, ma a pensarci meglio, forse sta nel sel.options perche' quando popolo automaticamente la select dei server in effetti non stampo il codice option.

    var server = sel.options[sel.selectedIndex].value;
    document.getElementById('moduli').options.length = 0;

    Ovviamente non so come uscirne.
    Ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    833
    In effetti avevi ragione su una cosa, questa situazione si crea solo IE, mentre con FF ovviamente funziona. Idee su come sistemare la cosa?
    Ciao grazie

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Forse con un link alla pagina si capisce meglio (visto che spiegazioni e script non sono sufficienti), perché io continuano a perdermi e non riuscendo ha capire la tua logica mi viene impossibile aiutarti.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    833
    E' un po un po problema, potrei linkare in pvt ma penso che non si possa fare.
    Grazie comunque, ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    833
    Hai ragione in discussioni utili sembra esserci proprio una gestione come quella che sto povando a fare "Select dinamiche in Ajax (valori prelevati da DataBase)"
    Quando imparero' a fare prima le ricerche

    Ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    833
    Scusate se riapro ma non riesco a far funzionare la popolazione delle autoselect con IE.
    Rispiego brevemente (con FF), nella pagina ci sono 4 select, quando modifico la 1 mi riempe le altre 3 (la 3 in base ai dati della 2) e se cambio qualcosa nella 2 mi ripopola la 3.

    Ora il problema con IE e che non popola mai la 3. Il fatto da quello che posso immaginare
    e' che IE non riconosca il getelementbyid di una sel.options se questa e' stata popolata.
    Allora posto un po di source, qualora servisse un link alla pagina par capire meglio ditelo
    che preparo l'ambiente. Ciao e grazie.

    codice:
    function GetServerCliente(sel)
    {
    	var cliente = sel.options[sel.selectedIndex].value;
    	document.getElementById('server').options.length = 0;	
    	if(cliente.length>0){
    		var index = ajax.length;
    		ajax[index] = new sack();
    		ajax[index].requestFile = 'GetServerCliente.php?cliente='+cliente;	
    		ajax[index].onCompletion = function(){ createServer(index) };	
    		ajax[index].runAJAX();		
    	}
    }
    function createServer(index)
    {
    	var obj = document.getElementById('server');
    	eval(ajax[index].response);	
    }
    
    
    function GetModuliProdotto(sel)
    {
    	var server = sel.options[sel.selectedIndex].value;
    	document.getElementById('moduli').options.length = 0; 	
    	if(server.length>0){
    		var index = ajax.length;
    		ajax[index] = new sack();
    		ajax[index].requestFile = 'GetModuliProdotto.php?server='+server;	
    		ajax[index].onCompletion = function(){ createModuli(index) };	
    		ajax[index].runAJAX();		
    	}
    }
    function createModuli(index)
    {
    	var obj = document.getElementById('moduli');
    	eval(ajax[index].response);	
    }

    codice:
    <select id="cliente" name="cliente" onchange="GetServerCliente(this);GetContattiCliente(this);GetModuliProdotto(this)">
    <option value=""></option>
    <?php 
    $sql2 = "select * from lib.file where CLSPRT = '".$customerCLSCLO."' "; 
    $stmt2 = db2_exec($dbh, $sql2, array('cursor' => DB2_SCROLLABLE));
    while ($row2 = db2_fetch_array($stmt2)) 
    {
    if(!$row2=="") { 
    $CONNOM = trim($CONNOM); 
    echo "<option value=\"$CONNOM\">$CONNOM</option>"; 
    } 
    } 
    echo "</select>" 
    ?> 
    
    
    <select id="server" name="server" onchange="GetModuliProdotto(this)"></select>

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    833
    uppetto consapevole che sto frantumando i maroni con questo topic.
    ciao

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    833
    Metto il link.
    Se ho rotto le palle ditelo, dopo tutte le richieste che ho fatto mi spetterebbe di diritto.

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.