Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [jquery] Seleziona una volta, deseleziona una volta poi basta!

  1. #1

    [jquery] Seleziona una volta, deseleziona una volta poi basta!

    come da titolo, ho costruito in una tabella la solita checklist da selezionare/deselezionare tramite un tasto.
    Appena entro funziona e seleziona, poi deseleziona, poi infine non funziona più.
    Ho realizzato un codice "elementare" per capire dove fosse l'errore ma nulla.
    Vi metto qualche snippet di codice.
    codice HTML:
    <tr>
        <td>&nbsp;</td>
        <td>ID</td>
        <td>num. rett.</td>
        <td>richiesta</td>
        <td>atto</td>
        <td>datata</td>
        <td>nome</td>
        <td>
            <button type="button" class="btn btn-default" id="seleziona" data-toggle="tooltip" data-placement="bottom" title="Seleziona tutti">
                <span class="fa fa-square-o" aria-hidden="true"></span>
            </button>
        </td>
    </tr>
    
    </thead>
    <tbody>
        <tr>
            <td></td>
            <td>496</td>
            <td>164/17</td>
            <td>San Leonardo</td>
            <td>Annullamento nascita</td>
            <td>nascita</td>
            <td>18 dicembre 2017</td>
            <td><input type="checkbox" name="stampami[0]" value="496"></td>
            </tr>
        <tr>
            <td><strong>art. 98</strong></td>
            <td>497</td>
            <td>161/17</td>
            <td>Resia</td>
            <td>Annotazione nascita</td>
            <td>nascita</td>
            <td>18 dicembre 2017</td>
            <td><input type="checkbox" name="stampami[1]" value="497"></td>
            </tr>
        <tr>
            <td><strong>art. 98</strong></td>
            <td>498</td>
            <td>165/17</td>
            <td>Dogna</td>
            <td>Annotazione nascita</td>
            <td>nascita</td>
            <td>18 dicembre 2017</td>
            <td><input type="checkbox" name="stampami[2]" value="498"></td>
            </tr>
        <tr>
            <td><strong>art. 98</strong></td>
            <td>499</td>
            <td>166/17</td>
            <td>Udine</td>
            <td>Annotazione nascita</td>
            <td>nascita</td>
            <td>18 dicembre 2017</td>
            <td><input type="checkbox" name="stampami[3]" value="499"></td>
            </tr>
    </tbody>
    La tabella di cui sopra, creata dinamicamente, riporta come ultima cella una checkbox cliccabile, se cliccata potrà essere inclusa nella lista da stampare, la riga.
    Mentre nella parte alta, c'è il tasto #seleziona che serve a selezionarli tutti in un colpo solo.
    Ebbene dato che ho jquery attivo nella pagina, ho voluto utilizzarlo e non so perché ma non è andato a buon fine.
    Ecco lo snippet di codice relativo al click:
    codice HTML:
                    var status = false;
                    $('#seleziona').click(function()
                    {
                        if (status == true)
                        {
                            $(this).html('<span class="fa fa-square-o" aria-hidden="true"></span>');
                            status = false;
                        }
                        else
                        {
                            $(this).html('<span class="fa fa-check-square-o" aria-hidden="true"></span>');
                            status = true;
                        }
                        $("input[name^='stampami']").each( function() {
                            $("input[name^='stampami']").attr('checked', status) ;
                        });
                    });
    Ora come detto nel titolo, la prima volta vengono cliccati tutti i checkbox, la seconda volta vengono esclusi tutti, ma alla terza cambia solo l'immagine nel bottone e non avviene più nessun check.
    Verificato sia in FF che in Chrome, status cambia regolarmente e non potrebbe essere diversamente; ma pare che il resto della funzione ( each ) sembra fregarsene dello stato.

  2. #2
    Ho anche provata una forma più seplice ma nulla.
    codice HTML:
                    var status = false;
                    $('#seleziona').click(function()
                    {
                        if (status)
                        {
                            $('input[name^=stampami]').attr('checked', true);
                            $(this).html('<span class="fa fa-square-o" aria-hidden="true"></span>');
                        }
                        else
                        {
                            $('input[name^=stampami]').attr('checked', false);
                            $(this).html('<span class="fa fa-check-square-o" aria-hidden="true"></span>');
                        }
                        status = !status;
                    });

  3. #3
    Strano, in realtà viene inserito checked="checked" solo non viene mostrata la spunta, a questo punto sono io che mi confondo

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    3,857
    Non so il motivo del problema ma se si tratta di jQuery 1.6 dovresti risolvere usando prop anziché attr.

    Qui una forma più stringata del tuo script:
    codice:
    var status = false;
    $('#seleziona').click(function() {
       $(this).html('<span class=" fa' + ( status ? 'fa-square-o' : 'fa-check-square-o' ) + '" aria-hidden="true"></span>');
       $("input[name^='stampami']").prop('checked', status = !status) ;
    });
    Prima di postare considera che tra i link utili puoi trovare il 75% delle risposte alle tue domande; il 15% tra i post del forum; il 9% sul web.
    Ti resta l’1% ... usalo bene!

    Le cattive domande sono quelle che non meritano risposta, le buone domande sono quelle che non hanno risposta
    L'Itailano non e nu'opnioine. E' improntate uslaro correattemtne sul froum. Garize!

  5. #5
    Veramente è il 1.12.x ma no ho fatta la prova guardando proprio il risultato su Analisi Pagina e in ognuna funzionava, ovvero mi metteva checked, solo non compariva la spunta.

  6. #6

  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    3,857
    ho fatta la prova guardando proprio il risultato su Analisi Pagina e in ognuna funzionava, ovvero mi metteva checked, solo non compariva la spunta.
    Già, ho verificato anche io su Analisi Pagina ottenendo il tuo stesso risultato. Non ho indagato più di tanto su come questo possa accadere ma da una veloce ricerca ho trovato giusto quella soluzione che ti ho riportato: https://stackoverflow.com/questions/...ox-with-jquery

    Mi fa piacere che funzioni
    Prima di postare considera che tra i link utili puoi trovare il 75% delle risposte alle tue domande; il 15% tra i post del forum; il 9% sul web.
    Ti resta l’1% ... usalo bene!

    Le cattive domande sono quelle che non meritano risposta, le buone domande sono quelle che non hanno risposta
    L'Itailano non e nu'opnioine. E' improntate uslaro correattemtne sul froum. Garize!

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 © 2018 vBulletin Solutions, Inc. All rights reserved.