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

    chiamare una funzione js da php

    Ho uno script php che gestisce 3 tendine dinamiche, che sono caricate da database.
    Ho aggiunto un option nelle tre tendine con scritto "altro" in modo che se il campo non è contenuto nel database, l'utente può inserirlo manualmente in un campo testo, che altrimenti deve rimanere disabilitato.

    Il problema sta nella funzione che attiva il campo testo, che è javascript, mentre la gestione delle tendine avviene in php, quindi non posso richiamare quella funzione.

    Come posso risolvere? Pensavo a un modo per cambiare gli attributi dei campi testo tramite php, ma non so se è possibile..

  2. #2
    utilizza tipo l'evento onchange del javascript, quando l'utente seleziona altro
    -A ricarichi la pagina passando come GET una variabile che tiene conto della selezione
    -B (meglio) tramite tecniche AJAX fai stampare il campo testo senza il ricarimento della pagina
    -C (se è così semplice ancora meglio) il campo input text lo fai stampare direttamente da javascript tramite inner.HTML
    =======================
    http://www.abidibo.net

  3. #3
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    IO eviterei la doppia sol e farei tutto in ajax.

    Cosi le select le popoli direttamente e sempre con js e ajax evitando di sclerare su 2 generazioni diverse( lato server - lato client ).

  4. #4
    AJAX non ho neanche idea di cosa sia quindi eviterei xD

    le tendine chiamano già una funzione javascript, che funziona quindi credo basti inserire del codice lì dentro giusto?

    la funzione che viene chiamata è questa, chiamata goSelect. Mentre nella pagina che chiama questa classe viene fatta una cosa tipo

    $Opmenu->JsHeader();

    ora non ricordo perchè non ho il codice sottomano. Se io inserissi qua l'attivazione/disattivazione dei campi testo farei una cosa che potrebbe funzionare o è follia?

    Codice PHP:
    public function JsHeader()
            {
                echo 
    '<SCRIPT language=JavaScript>
                   <!--
                function goSelect(daform)
                {
                    with(daform)
                    {
                        top.window.location=options[selectedIndex].value;
                    }
                }
                  //-->
                </SCRIPT>
                '
    ;

            } 

  5. #5
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Ajax e' ovunque .....
    e' intorno a te .....
    ti circonda quando controlli la mail ....
    lo respiri quando fai un bonifico ....

    E' il mondo che ti e' stato messo davanti per nasconderti la verita'!!

    Che i formati web sono osboleti e assolutamente inefficenti per le attuali necessita' di creazione di web apps!!!!


    Cmq cagate a parte, si puoi usare una soluzione del genere.
    Pero' ti consiglio di farlo in ajax e di imparare questa tecnica per le gestione dinamica di qualsiasi piccolo oggetto della tua pagina. Visto che orami e' ovunque e sinceramente a volte e' anche comodo.

    AJAX, acronimo di Asynchronous JavaScript and XML, è uno strumento di sviluppo per ...



  6. #6
    eh ma io ci ho provato... ma non capisco quando deve essere chiamata la funzione e dove dichiararla...

    il mio script praticamente è quello in questo thread, ho modificato pochissime cose. Se dovessi inserire questo benedetto campo testo che si abilita/disabilita quando clicco su altro o su un campo della tendina, cosa dovrei fare? ci sbatto la testa da un mese

  7. #7
    ho risolto usando una variabile passata con il metodo GET e il metodo onLoad del body, che lancia una funzione che controlla il valore di quella variabile, e a seconda del valore abilita/disabilita i campi testo.

    <body onLoad="<?php if($_GET['action']=='altro1') echo 'abilita3()'; else if($_GET['action']=='altro2') echo 'abilita2()'; else if($_GET['action']=='altro3') echo 'abilita1()'; ?>">

    function abilita3()
    {
    document.modulo.oggetti.disabled=false;
    document.modulo.oggetti.select();
    document.modulo.oggetti.focus();
    document.modulo.marche.disabled=false;
    document.modulo.modelli.disabled=false;
    }

    function abilita2()
    {
    document.modulo.marche.disabled=false;
    document.modulo.marche.select();
    document.modulo.marche.focus();
    document.modulo.modelli.disabled=false;
    }

    function abilita1()
    {
    document.modulo.modelli.disabled=false;
    document.modulo.modelli.select();
    document.modulo.modelli.focus();
    }

  8. #8
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Ma a sto punto nn ti conviene fare una cosa del genere:

    Esempio

    campo testuale

    <textarea name="mio_testo" <?=( $_GET['action']=='altro1' ? " disabled=\"disabled\" " : "" )?>
    </textarea>

    E via discorrendo anche per gli altri.

    Poi fai una funzione js che gestisce lo stato


    function enableNode( node )
    {
    if( node )
    node.removeAttribute("enabled");
    }
    function disableNode( node )
    {
    if( node )
    node.setAttribute( "enabled" , "enabled" );
    }


    QUindi vai ad usare queste funzioni come preferisci per abilitare / disabilitare le form

  9. #9
    non è uguale?

  10. #10
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    concettualmente si.

    Il fatto e' che io uso delle funzioni riutilizzabile anable/disableNode.
    E le puoi riusare ovunque te invece fai delle funzioni adHoc per ogni blocco alla fine sono solamente due approcci diversi al problema.

    Una cosa pero'.
    TU carichi abilitazione/disabilitazione su onload della pagina .... e se uno disabilita js?

    Con la mia tecnica e' php che decide lo stato di default dei campi e js si occupera' solamente di modificare tale stato mentre l'utente naviga sulla pagina.
    Cosi' anche se js e' disabilitato almeno lo stato di partenza e' sempre mantenuto coerente.

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.