Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590

    spuntare checkbox on <p> click

    ho un elenco così strutturato
    codice:
    <li class="check">			<input type="checkbox" value="None" id="check1" onclick="doAwesomeStuff()" checked="" name="check">
    	<label for="check1"></label><p onclick="" href="#">real Label</p>
    	   </li>
    come posso fare in modo che al click su <p> cambi lo stato della checkbox (spuntata/non spuntata)?

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    <label for="check1"></label><p onclick="document.getElementById('check1').checked = (!document.getElementById('check1').checked)? true : false" href="#">real Label</p>
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    grazie, però i <li> sono molti e vorrei evitare di usare getElementById su ogni <p>
    c'è modo di sfruttare la struttura dom e fare una cosa tipo
    codice:
    <p onclick="checkatore(this)></p>
    
    function checkatore(p){
    var checkbox = p.parent().find('input');
    if(checkbox.check==true)
    checkbox.check=false
    else  checkbox.check=true
    }
    ho scritto tutto molto rozzo, ma vorrei realizzare una cosa del genere, anche con jquery..

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    Ho provato a buttare giù del codice...
    http://jsfiddle.net/xej5wtur/embedde...t,js,html,css/

    Edit:
    Se vuoi jQuery...
    http://jsfiddle.net/2zmcc7zg/embedde...t,html,js,css/
    (Io comunque preferisco quello in js puro )
    Ultima modifica di tampertools; 06-10-2014 a 21:21
    No

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    uhm a funzionare funziona, ma siamo sicuri che per una piccolezza del genere serva tutto quel popò di codice con ciclo? una cosa simile a quella che avevo proposto credo si possa fare in jquery..
    sto tentando di mantenere la pagina il più leggero possibile, dato che già deve processare diversi input di svariate centinaia di migliaia di byte..

    in ogni caso ho provato il tuo codice, come ho detto funziona, ma, com'è logico che sia, non attiva l'onclick della checkbox, che a me serve

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    ho provato il mio codice..c'è qualcosa che non quadra nel riferimento passato
    codice:
    function checkatore(a){
    
        $(a).parent().find('input').attr('checked','checked');
    	}
    
    ______
    
    			<input type="checkbox" value="None" id="check3"onclick="fun()"checked name="check" />
    	<label for="check3"></label><a onclick="checkatore(this)" href="#">label</a>

  7. #7
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ma la versione jquery di che postato tampertools non ti piace? Ho qualche dubbio che si possa "snellire" ancora e comunque non peso che due righe di codice in più o in meno incidano sulle performance del sito.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    Un altra cosa... se vuoi risparmiare su ogni singolo byte... sei sicuro di voler usate jquery? È un po' Pescantina!
    No

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    590
    volevo solo evitare il ciclo per questa piccolezza, ma va bene così dai
    dovrei solo aggiungere un evento click alla checkbox, perché deve spuntarmi la checkbox, ma deve anche attivare la funzione associata a questa doAwesomeStuff(arg)

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    il ciclo penso si possa evitare, il codice che hai postato tu dovrebbe funzionare, anche se è inutile richiamare la funzione inline, usa i selettori jquery.

    Con questo codice html:

    codice:
      
    <ul id="myList">
        <li>
            <input type="checkbox"/>
            <p>"Label" 1</p>
        </li>
        <li>
            <input type="checkbox"/>
            <p>"Label" 2</p>
        </li>
    </ul>
    la funzione jquery si puo riscrivere cosi:

    codice:
    $("p").click(function(){
      var chk = $(this).prev();
      chk.prop("checked", !chk.is(":checked"));
    });
    nel tuo caso sarà cosi:

    codice:
    $("a").click(function(){
        chk = $(this).parent().find('input');
        chk.prop("checked", !chk.is(":checked"));
    });
    e rimuovi l'onclick dal tag a
    Ultima modifica di Vindav; 07-10-2014 a 10:52

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.