• User

    Problema con funzione javascript

    Salve a tutti ragazzi, ho un problema con una semplicissima funzione Javascript e non ne riesco a venire fuori. Ho già cercato sul forum ed ho tentato tutte le soluzioni che credevo valide ma senza risultati.
    La funzione, che abilita una textarea (disabilitata) dopo aver spuntato una checkbox, è questa:

    function abilita()
    {
    if((document.form1.altro.checked)==true){
    document.form1.note.disabled=false;
    }else{
    document.form1.note.disabled=true;
    }
    }

    la checkbox è questa:
    <input name="altro" type="checkbox" value="Altro" onclick="abilita()" />

    La textarea è questa:
    <textarea name="note" cols="60" rows="" disabled="disabled"></textarea>

    La cosa strana è che questa funzione esiste su un'altra pagina da me creata qualche tempo fa e li funziona perfettamente. L'unica differenza è che quella è una pagina php mentre questa è asp, ma questo non dovrebbe centrare nulla. Ho controllato 100 volte il nome del form, della check e della textarea e sono corretti. Non funziona ne su Firefox ne su IE, anzi su IE mi da in basso l'avviso di "Problemi di visualizzazione della pagina" e mi da il seguente errore: "document.form1.altro.checked è nullo o non è un errore".

    Non riesco proprio a capire dove sbaglio, spero mi possiate aiutare...
    Grazie.


  • ModSenior

    Magari non è quello ma se oltre al name metti anche id="altro" o id ="note" ?


  • User

    Purtroppo trai vari tentativi che ho fatto c'era anche quello. Ho provato a mettere l'attibuto id prima a uno, poi all'altro, addirittura anche al form stesso, ma niente......


  • ModSenior

    Prova cosi.

    [php]
    <html>
    <head>
    <title>Test Check</title>
    <script type="text/javascript">
    function abilita(valore)
    {
    var miatextarea=document.getElementById("mytextarea");
    if(valore)
    {
    miatextarea.disabled=true;
    }
    else
    {
    miatextarea.disabled=false;
    }
    }
    </script>
    </head>
    <body>
    <table>
    <tr>
    <td>DISABILITA TEXTAREA</td>
    <td><input type="checkbox" id="mycheckbox" name="mycheckbox" onclick="abilita(this.checked)"/></td>
    </tr>
    <tr>
    <td>TEXTAREA</td>
    <td><textarea id="mytextarea" name="mytextarea" ></textarea></td>
    </tr>
    </table>
    </body>
    </html>
    [/php]


  • User

    Ottimo, ora funziona!!!:)
    Grazie Mille per l'aiuto.....nel frattempo sono andato a creare un form con alcuni campi da rendere obbligatori e neanche questa funzione si attiva correttamente. Ora provo a seguire la logica del codice che mi hai fornito e cerco di mettere in funzione anche il controllo sui campi; spero di riuscire altrimenti mi tocca distrubare ancora.....😊

    Per il momento ti ringrazio tantissimo.....


  • User

    Purtroppo non ne vengo fuori nemmeno dal controllo dei campi!!!

    function verifica(){
    var nome=document.form1.nome.value;
    if (nome == "") {
    window.alert('Il campo NOME è obbligatorio');
    } else {
    document.form1.submit();
    }
    }

    la funzione la richiamo così:

    <form name="form1" id="form1" action="inviodati.asp" method="post" onsubmit="verifica()" />

    Il campo di testo si chiama ovviamente "nome" con tanto di attributo id="nome"

    Dov'è che sbaglio stavolta???❌x


  • ModSenior

    Prova cosi... 🙂

    [php]
    <html>
    <head>
    <title>Prova</title>
    <script type="text/javascript">
    function verifica()
    {
    var nome=document.form1.nome.value;
    if (nome == "")
    {
    window.alert('Il campo NOME è obbligatorio');
    }
    else
    {
    document.form1.submit();
    }
    }
    </script>
    </head>
    <body>
    <form name="form1" id="form1" action="http://www.google.it" method="post" />
    <input type="text" id="nome" name="nome" />
    <input type="button" value="INVIA" onclick="verifica()"/>
    </form>
    </body>
    </html>
    [/php]


  • User

    Come prima cosa grazie dell'aiuto.....

    Però non va......ho provato anche a fare onclick="verifica();" ma non funziona nemmeno, il form viene inviato come se la funzione non ci fosse proprio....
    Non riesco a capire come mai.....


  • ModSenior

    Mmm con quale browser?
    Mi sembrava di averlo testato sia con Internet Explorer che con Firefox.


  • User

    Allora la situazione è questa: il tuo codice funziona. Ho provato a inserirlo in una paginetta creata da zero e funziona sia con IE che con FIREFOX. Non funziona però se lo inserisco nella mia pagina. Da cosa potrebbe dipendere? In fin dei conti si tratta di una pagina dove stanno dei solo dei div contenenti i campi di testo e qualche immagine.....
    Ora comunque provo a rifare la pagina daccapo inserendo prima il tuo codice e man mano che aggiungo le varie sezioni vedrò di capire cos'è che gli da fastidio.
    Grazie di nuovo per l'aiuto comunque.......


  • User

    Svelato l'arcano!!!!!
    In pratica il tuo codice come detto era giusto, solo che non funzionava nella mia pagina ed io non capivo perchè in quanto c'era solo qualche div con i campi di testo nella pagina. Nella pagina però c'è anche un cacchio di include che tira dentro un altro form nominato anche form1 e questo mandava in tilt la funzione.......
    Al di là di questo contrattempo il tuo aiuto mi è stato molto utile in quanto la funzione che mi hai indicato tu per i campi obbligatori è più pulita e migliore di quella che avevo io che era un po incasinata....
    Perciò ti ringrazio ancora tantissimo per l'aiuto.
    Saluti e a presto.....


  • ModSenior

    Che sfortuna o....
    😄
    Potevo chiamarlo con un altro nome?
    E no.... quello gli ho dato...
    Eh eh... 😄