Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    2

    Immagini come radiobutton - SEL/DESEL

    Salve a tutti

    Breve spiegazione:
    L'idea è quella di permettere ad un utente di scegliere il suo avatar.

    Inizialmente pensavo di mettere di fianco ad ogni immagine un radiobutton vero e proprio.
    Poi ho pensato di rendere il tutto un po' differente dal solito e più bello esteticamente e di far sì che le immagini stesse vengano selezionate e fungano esattamente come un radio button.

    Così con poche righe di js ho fatto in modo che, quando un utente clicca sull'immagine, il bordo di questa si ingrandisce (per evidenziare la selezione) e il value un input hidden viene variato appunto a seconda del click.

    Mi è riuscito tutto bene, ossia, il value della hidden viene modificato ed è pronto per l'invio e il bordo si visualizza.

    Il mio problema sorge se clicco su due o più immagini. L'utente si ritrova con più immagini col bordo ingrandito confondendolo così sulla reale selezione.

    Ecco, quello che mi servirebbe è trovare una strategia per "deselezionare", quindi togliere il bordo, alla vecchia immagine e finora non ho trovato una maniera. Se qualcuno ha dei suggerimenti gliene sarei molto grato.

    Ecco il mio codice finora:
    codice:
    <script type="text/javascript">
    function select_avt(nome_avatar, img_id)
    {
    // Modifico il valore del campo hidden
    document.getElementById("hidden_value").value = nome_avatar;
    
    // Imposto il bordo a 3
    document.getElementById(img_id).border = 3;
    }
    </script>
    
    [img]avatar.jpg[/img]
    
    <input type="hidden" id="nome_avatar" value="" />

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Devi fare un ciclo
    codice:
    <script type="text/javascript">
    function select_avt(nome_avatar, img_id)
    {
    var iconavatar = document.getElementsByTagName("img")
    document.getElementById("hidden_value").value = nome_avatar;
    for(var i=0; i<iconavatar.length; i++){
    // Imposto il bordo a 3
    if(iconavatar[i].className == 'avatar' && iconavatar[i].id == img_id){
    iconavatar[i].style.border = 3;
    }else{
    iconavatar[i].style.border = 0
    }
    }
    }
    </script>
    
    [img]avatar.jpg[/img]
    [img]avatar1.jpg[/img]
    <input type="hidden" id="nome_avatar" value="" />
    Non l'ho testato.

    P.S. Benvenuto su html.it
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    2
    Preso e riadattato al mio scritp, funziona bene =) grazie 1000

  4. #4
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Si potrebbe fare in modo a mio parere migliore utilizzando jquery
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

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.