RadioButton per JS aktivieren: Logikfehler?

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

tklustig

Erfahrenes Mitglied
also in etwa so:
Javascript:
$(document).ready(function() {
        
    restoreContents();
    
    $('#edit').bind('click', toggleEditContent);
    $('#clear').bind('click', resetContent);
    
    function saveContents() {
        var rbIsClicked = $('#rbIsClicked').html();
        localStorage['rbIsClicked'] = rbIsClicked;
    }
    
    function restoreContents() {
        var myrbIsClicked = localStorage['rbIsClicked'];
        if (myrbIsClicked != undefined) {
            $('#rbIsClicked').html(myrbIsClicked);
        }
    }
    
    function toggleEditContent(e) {
        if ($('#rbIsClicked').attr('contenteditable') == 'false') {
            $('#rbIsClicked').attr('contenteditable', 'true');
            $('#edit').val('Speichern');
            $('#rbIsClicked').focus();
        } else {
            $('#rbIsClicked').attr('contenteditable', 'false');
            $('#edit').val('Bearbeiten');
            saveContents();
        }
    }
    
    function resetContent(e) {
        localStorage.clear();
        window.location.reload();
    }   
});
 
Zuletzt bearbeitet:

Sempervivum

Erfahrenes Mitglied
Hast Du das getestet? Einiges leuchtet mir nämlich nicht ein.
Ich stelle mir das Speichern und Einlesen eher so vor:
Code:
        function saveContents() {
            var rbIsClicked = $("input[type='radio'][name='rad']:checked");
            if (rbIsClicked.length != 0) localStorage['rbIsClicked'] = rbIsClicked.attr("id");
        }
        function restoreContents() {
            var rbIsClicked = localStorage['rbIsClicked'];
            if (rbIsClicked != undefined) {
                $('#' + rbIsClicked).attr('checked', true);
            }
        }
        $("input[type='radio'][name='rad']").on("change", saveContents);
        restoreContents();
 

tklustig

Erfahrenes Mitglied
Na ja, damit wollte ich eigentlich nur das Prinzip von Local Storages aufzeigen, ohne direkt den Kontext auf die Radio Buttons zu legen. Im übrigen habe ich mich dafür entschieden, Deine local Storage Lösung zu nehmen, da sie meinem Grundverständnis entspricht: PHP ist für den Server zuständig, JS für den Client;)
Javascript:
 <script src="https://code.jquery.com/jquery-3.4.1.js" integrity="sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU="crossorigin="anonymous"></script>
.
.
<div>
  <input type="radio" name="rad" id="dummy1" value="frontOf">vor
  <input type="radio" name="rad" id="dummy2" value="back">zurück
</div>
.
.
<script>
        function saveContents() {
            var rbIsClicked = $("input[type='radio'][name='rad']:checked");
            if (rbIsClicked.length != 0)
                localStorage['rbIsClicked'] = rbIsClicked.attr("id");
        }
        function restoreContents() {
            var rbIsClicked = localStorage['rbIsClicked'];
            if (rbIsClicked != undefined) {
                $('#' + rbIsClicked).attr('checked', true);
            }
        }
        $("input[type='radio'][name='rad']").on("change", saveContents);
        restoreContents();
</script>
 
Zuletzt bearbeitet:
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…