Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606

    [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
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    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
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    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
    5,690
    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) ;
    });
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    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
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    Ok funge, era .attr in luogo di .prop

  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,690
    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
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

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