Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it L'avatar di gordian
    Registrato dal
    Sep 2002
    Messaggi
    1,139

    riempire un textarea cliccando su un checkbox

    Ciao a tutti,
    avrei un'esigenza molto particolare, ma non conosco per niente il javascrip

    In pratica avrei un form normalissimo contenente diversi checkbox + un textarea. Es:

    <form name="form1" method="get" action="file.php">
    <input type="checkbox" name="scelte[]" value="valore 1">
    valore 1

    <input type="checkbox" name="scelte[]" value="valore 2">
    valore 2

    <input type="checkbox" name="scelte[]" value="valore 3">
    valore 3

    <textarea name="note" cols="30" rows="6">
    </textarea>
    <input type="submit" name="submit" value="Invia">
    </form>

    Dovrei fare in modo che ceccando su uno solo di questi checkbox (ad esempio il "valore 2") il textarea si autocompilasse con del testo di default preimpostato.
    Questo, però, non dovrebbe escludere la scelta degli altri 2 e neanche la possibilità di modificare manualmente il contenuto del textarea...

    Non saprei proprio da dove iniziare

    Grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    I nomi dei checkbox devono proprio essere uguali e contenere la quadra?

    Comunque ecco una soluzione possibile:

    <input type="checkbox" name="scelte[]" value="valore 1" onclick="aggiungi(this,1);">valore 1

    <input type="checkbox" name="scelte[]" value="valore 2" onclick="aggiungi(this,2);">valore 2

    <input type="checkbox" name="scelte[]" value="valore 3" onclick="aggiungi(this,3);">valore 3

    <textarea name="note" cols="30" rows="6">
    </textarea>

    Nella head corrispondente devi mettere lo script:
    function aggiungi(ff,pp) {
    var str;
    switch (pp) {
    case 1:
    str = "testo preimpostato uno";
    break;

    case 2:
    str = "testo preimpostato due";
    break;

    case 3:
    str = "testo preimpostato tre";
    break;
    }
    ff.form.note.value += str;
    }

    Nota: il testo verra` aggiunto in coda alla textarea (non e` possibile altrimenti.

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente di HTML.it L'avatar di gordian
    Registrato dal
    Sep 2002
    Messaggi
    1,139
    Originariamente inviato da Mich_
    I nomi dei checkbox devono proprio essere uguali e contenere la quadra?

    Comunque ecco una soluzione possibile:

    <input type="checkbox" name="scelte[]" value="valore 1" onclick="aggiungi(this,1);">valore 1

    <input type="checkbox" name="scelte[]" value="valore 2" onclick="aggiungi(this,2);">valore 2

    <input type="checkbox" name="scelte[]" value="valore 3" onclick="aggiungi(this,3);">valore 3

    <textarea name="note" cols="30" rows="6">
    </textarea>

    Nella head corrispondente devi mettere lo script:
    function aggiungi(ff,pp) {
    var str;
    switch (pp) {
    case 1:
    str = "testo preimpostato uno";
    break;

    case 2:
    str = "testo preimpostato due";
    break;

    case 3:
    str = "testo preimpostato tre";
    break;
    }
    ff.form.note.value += str;
    }

    Nota: il testo verra` aggiunto in coda alla textarea (non e` possibile altrimenti.

    Ciao
    Michele
    Ok, ottimo.
    Nel mio caso però il testo da inserire prevede degli a capo. Ho provato a scrivere:

    case 3:
    str = "testo preimpostato tre
    seconda riga";
    break;

    ma non prende la formattazione....

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    l'acapo dentro una textarea lo fai con \n:
    case 3:
    str = "testo preimpostato tre\nseconda riga";
    break;

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Utente di HTML.it L'avatar di gordian
    Registrato dal
    Sep 2002
    Messaggi
    1,139
    Originariamente inviato da Mich_
    l'acapo dentro una textarea lo fai con \n:
    case 3:
    str = "testo preimpostato tre\nseconda riga";
    break;

    Ciao
    Michele
    Ti ringrazio.
    Ti chiederei un'altra cosa:
    è possibile, cliccando sempe un checkbox, fare in modo che sotto a questo ne compaiano degli altri automaticamente?
    Ad esempio cliccando sul secondo il form dovrebbe mutare in questo modo:

    <form name="form1" method="get" action="file.php">
    <input type="checkbox" name="scelte[]" value="valore 1">
    valore 1

    <input type="checkbox" name="scelte[]" value="valore 2">
    valore 2

    <input type="checkbox" name="scelte[]" value="valore 2a">
    valore 2a

    <input type="checkbox" name="scelte[]" value="valore 2b">
    valore 2b

    <input type="checkbox" name="scelte[]" value="valore 3">
    valore 3

    <textarea name="note" cols="30" rows="6">
    </textarea>
    <input type="submit" name="submit" value="Invia">
    </form>

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Aggiungere campi ad un form, non credo sia possibile (perderesti quanto gia` inserito).

    Pero` mostrare o nascondere un pezzo di codice e` possibile: lo metti tutto in un div (o span) e poi modifichi la proprieta` display in block (inline) oppure none.

    Oppure puoi agire sulla proprieta` visibility (visible / hidden).

    Con display lo spazio nella pagina cambia, con visibility cambia solo la visualizzazione (ma non lo spazio occupato).

    Ma ribadisco: sei sicuro che vuoi che quei campi siano dei checkbox? Che senso ha avere dei checkbox con lo stesso nome? Cosa deve trasmettere al server se due sono checked contemporaneamente?

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    Utente di HTML.it L'avatar di gordian
    Registrato dal
    Sep 2002
    Messaggi
    1,139
    Originariamente inviato da Mich_
    Aggiungere campi ad un form, non credo sia possibile (perderesti quanto gia` inserito).

    Pero` mostrare o nascondere un pezzo di codice e` possibile: lo metti tutto in un div (o span) e poi modifichi la proprieta` display in block (inline) oppure none.

    Oppure puoi agire sulla proprieta` visibility (visible / hidden).

    Con display lo spazio nella pagina cambia, con visibility cambia solo la visualizzazione (ma non lo spazio occupato).

    Ma ribadisco: sei sicuro che vuoi che quei campi siano dei checkbox? Che senso ha avere dei checkbox con lo stesso nome? Cosa deve trasmettere al server se due sono checked contemporaneamente?

    Ciao
    Michele
    Nel campo "name" di tutti i checkbox c'è, come hai notato, l'array "scelte[]".
    in pratica spedisco al server un array che viene letto per mezzo di uno script in PHP.
    Tutti gli elementi di questo array (cioè tutte le scelte dell'utente) vengono elencati poi in un'unica variabile separati da un ";"
    In questo modo:
    Codice PHP:
    //SCOMPATTO L'ARRAY SCELTE
    $elenco ="";
    foreach (
    $_POST[scelte] as $key => $val)
             {
              
    $elenco .="$val; ";
         } 
    Ma a parte quello, mi interesserebbe capire meglio come utilizzi i layer (div).
    Potresti farmi l'esempio pratico?
    Grazie

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    codice:
    <form name="form1" method="get" action="file.php">
      <input type="checkbox" name="scelte[]" value="valore 1">
    valore 1
    
      <input type="checkbox" name="scelte[]" value="valore 2" 
          onclick="document.getElementsById('nascosto').style.display = (this.checked)?'block':'none';">
          valore 2
    
      <div id="nascosto" style="display:none;">
        <input type="checkbox" name="scelte[]" value="valore 2a"> valore 2a
    
        <input type="checkbox" name="scelte[]" value="valore 2b"> valore 2b
    
        <input type="checkbox" name="scelte[]" value="valore 3"> valore 3
    
      </div>
      <textarea name="note" cols="30" rows="6"></textarea>
      <input type="submit" name="submit" value="Invia">
    </form>
    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  9. #9
    Utente di HTML.it L'avatar di gordian
    Registrato dal
    Sep 2002
    Messaggi
    1,139
    ..Mi dispiace romperti...
    ma mi da errore di javascript.
    Potresti provarlo in locale? Magari è un errore di punteggiatura.
    Io non ci capisco nulla

    Il browser mi segna errore di script in corrispondenza della riga:

    onclick="document.getElementsById('nascosto').styl e.display = (this.checked)?'block':'none';">

    Non è che c'è qualche funzione da mettere negli HEAD?? :master:

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Purtroppo non ho un sistema di testing attivo, per cui fare prove mi porta via troppo tempo.

    Con il codice che ti ho dato non servono funzioni, dato che e` tutto scritto dentro l'evento.

    Ma se si deve passare alla fase di debug, allora serve la funzione.

    onclick="mostra_nasc(this);"

    E fai la funzione mostra_nasc() cosi`:

    function mostra_nasc(cc) {
    alert ("inizio funzione");
    var elem = document.getElementsById('nascosto');
    alert ("elem");
    if(cc.checked) {
    alert("checked");
    elem.style.display ='block';
    } else {
    alert("non checked");
    elem.style.display ='none';
    }
    }

    Ciao
    Michele
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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.