2016-12-01 3 views
0

Ich habe ein paar Radiobuttons und ein paar Dropdown-Menüs, die zeigen/verbergen, je nachdem welche Radiobutton ausgewählt ist, aber meine ersten drei (von sechs) Radiobuttons aktiviert nicht den JS-Code direkt!Javascript direkt laden

https://jsfiddle.net/spfrh9h8/

prüft diese Geige aus einem visuellen zu bekommen, was Im versucht zu sagen. Während das Radio "Primary" ausgewählt ist, sollte kein Dropdown-Menü sichtbar sein. Es wird nicht angezeigt, wenn es gedrückt wird. Wenn es ausgewählt ist und die Seite neu geladen wird, ist das Dropdown-Menü wieder sichtbar t. Ich bin mir ziemlich sicher, dass dies eine einfache Lösung ist, aber ich konnte es nicht herausfinden.

$(function() { 
     $("input[type='radio']").change(function() { 
      if ($(this).val() == 1 && this.checked) { 
       $("#exerVariNameS").show(); 
       $("#exerVariNameB").hide(); 
       $("#exerVariNameD").hide(); 
       $("#exerVariNameA").hide(); 
      } else if ($(this).val() == 2 && this.checked){ 
       $("#exerVariNameS").hide(); 
       $("#exerVariNameB").show(); 
       $("#exerVariNameD").hide(); 
       $("#exerVariNameA").hide(); 
      } else if ($(this).val() == 3 && this.checked) { 
       $("#exerVariNameS").hide(); 
       $("#exerVariNameB").hide(); 
       $("#exerVariNameD").show(); 
       $("#exerVariNameA").hide(); 
      } 
     }); 

     $("input[name='Type']").click(function(){ 
       var value=$(this).val(); 
      switch(value){ 
       case '4': 
       $("input[name='Exercise']").each(function(){ 
        $(this).closest('div').show(); 
       }); 
       $('#dropdown').hide(); 
       $('#exerVariNameA').hide(); 
       break; 
       case '5': 
       $("input[name='Exercise']").each(function(){ 
        $(this).closest('div').show(); 
       }); 
       $('#dropdown').show(); 
       $('#exerVariNameA').hide(); 
       break; 
       case '6': 
       $("input[name='Exercise']").each(function(){ 
        $(this).closest('div').hide(); 
       }); 
       $('#dropdown').hide(); 
       $('#exerVariNameA').show(); 
       break; 
      } 
     }); 
     //Remember which radiobutton was last clicked and keeps it that way 
     //after a page refresh or form post. 
     $('input[type=radio]').each(function() { 
      var state = JSON.parse(localStorage.getItem('radio_' + this.id)); 
      if (state) this.checked = state.checked; 
      $(this).trigger('change'); 
     }); 
     $("input[name='Type']").each(function(){ 
      var state=JSON.parse(localStorage.getItem('radio_val'+this.value)); 
      if(state) this.checked=state.checked; 
      $(this).trigger('change'); 
     }); 
     $(window).bind('unload', function() { 
      $('input[type=radio]').each(function() { 
       localStorage.setItem('radio_' + this.id, JSON.stringify({checked: this.checked})); 
      }); 
      $("input[name='Type']").each(function(){ 
       localStorage.setItem('radio_val'+this.value,JSON.stringify({checked:this.checked})); 
      }); 
     }); 
    }); 
+0

Vielleicht können Sie den Klick auf das erste Radio auslösen, wenn die Seite '$ (document) lädt .ready (function() {$ ('input [type = radio]: first-child'). Trigger ('click');}); '. –

+0

Nun, es hat funktioniert, aber es kam mit einigen Komplikationen, das Dropdown, das verschwindet, wenn 'Primary' geklickt wird, sollte nicht verschwinden, wenn 'Secondary' angeklickt wird, und da es sich erinnert, was vorher geklickt wurde Nachladen, die Box ist sichtbar, aber nach dem erneuten Laden wird sie ausgeblendet, da die Primärdatenbank ausgelöst wird. Wie auch immer, ich brauche nicht die ersten drei Radios, um mich an das letzte zu erinnern, das beim Nachladen ausgewählt wurde, aber da ich dieses Javascript nicht selbst geschrieben habe und nicht sehr viel davon verstehe, weiß ich nicht, wie man das macht, während ich noch die letzten drei Radios mache Fortsetzung –

+0

... während die letzten drei Radios immer noch den zuletzt gewählten Wert speichern! Es würde mir gut gehen, wenn Primary jedes Mal neu geladen wird, wenn die Seite neu geladen wird, solange das richtige Zeug gezeigt/versteckt wird, haha. Jede Hilfe wird geschätzt! –

Antwort

1

Sie können eine Funktion hinzufügen, die auf Dokumentlast ausgelöst wird. Innerhalb dieser Funktion können Sie den gewünschten Radio Button auslösen.

Beispiel: Immer das erste Funkgerät beim Laden des Dokuments auslösen.

$(document).ready(function() { 
    $('input[type=radio]:first-child').trigger('click'); 
}); 

Beispiel: Trigger letzte Radio vom Benutzer ausgewählt (nach localStorage).

$(document).ready(function() { 
    $('input[type=radio]').each(function() { 
    radio_val = JSON.parse(localStorage.getItem('radio_'+this.id)); 
    if (radio_val.checked) { 
     $(this).trigger('click'); 
    } 
    }); 
}); 

Für diesen letzten Block ist dort zu arbeiten IDs auf Ihrem Markup fehlt.

hier:

<input type="radio" name="Type" id="typ4" value="4" /> 

hier:

<input type="radio" name="Type" id="typ5" value="5" /> 

Und hier:

<input type="radio" name="Type" id="typ6" value="6" /> 

dieses working fiddle See.

+0

Das mein Freund, ist absolut fantastisch! Sehr geschätzt! Danke –

+0

Froh ich könnte helfen! –

0

fügen Sie einfach zwei Häute auf der Funktion Start

$(function() { 
 
$('#dropdown').hide(); 
 
        $('#exerVariNameA').hide(); 
 
      $("input[type='radio']").change(function() { 
 
       if ($(this).val() == 1 && this.checked) { 
 
        $("#exerVariNameS").show(); 
 
        $("#exerVariNameB").hide(); 
 
        $("#exerVariNameD").hide(); 
 
        $("#exerVariNameA").hide(); 
 
       } else if ($(this).val() == 2 && this.checked){ 
 
        $("#exerVariNameS").hide(); 
 
        $("#exerVariNameB").show(); 
 
        $("#exerVariNameD").hide(); 
 
        $("#exerVariNameA").hide(); 
 
       } else if ($(this).val() == 3 && this.checked) { 
 
        $("#exerVariNameS").hide(); 
 
        $("#exerVariNameB").hide(); 
 
        $("#exerVariNameD").show(); 
 
        $("#exerVariNameA").hide(); 
 
       } 
 
      }); 
 

 
      $("input[name='Type']").click(function(){ 
 
      \t \t var value=$(this).val(); 
 
       switch(value){ 
 
       \t case '4': 
 
        \t $("input[name='Exercise']").each(function(){ 
 
        \t $(this).closest('div').show(); 
 
        }); 
 
        $('#dropdown').hide(); 
 
        $('#exerVariNameA').hide(); 
 
        break; 
 
        case '5': 
 
        $("input[name='Exercise']").each(function(){ 
 
         $(this).closest('div').show(); 
 
        }); 
 
        $('#dropdown').show(); 
 
        $('#exerVariNameA').hide(); 
 
        break; 
 
        case '6': 
 
        $("input[name='Exercise']").each(function(){ 
 
         $(this).closest('div').hide(); 
 
        }); 
 
        $('#dropdown').hide(); 
 
        $('#exerVariNameA').show(); 
 
        break; 
 
       } 
 
      }); 
 
      //Remember which radiobutton was last clicked and keeps it that way 
 
      //after a page refresh or form post. 
 
      $('input[type=radio]').each(function() { 
 
       var state = JSON.parse(localStorage.getItem('radio_' + this.id)); 
 
       if (state) this.checked = state.checked; 
 
       $(this).trigger('change'); 
 
      }); 
 
      $("input[name='Type']").each(function(){ 
 
      \t var state=JSON.parse(localStorage.getItem('radio_val'+this.value)); 
 
       if(state) this.checked=state.checked; 
 
       $(this).trigger('change'); 
 
      }); 
 
      $(window).bind('unload', function() { 
 
       $('input[type=radio]').each(function() { 
 
        localStorage.setItem('radio_' + this.id, JSON.stringify({checked: this.checked})); 
 
       }); 
 
       $("input[name='Type']").each(function(){ 
 
       \t localStorage.setItem('radio_val'+this.value,JSON.stringify({checked:this.checked})); 
 
       }); 
 
      }); 
 
     });

+0

Nun, diese Art von Hälfte davon gelöst!Wenn "Secondary" Radio von Anfang an ausgewählt wurde, sollte es sichtbar sein, sowie wenn "Assistance" ausgewählt ist (aber im Falle von "Assistance" verschwindet die zweite Gruppe von Radios, wie beim Klick, aber nicht beim Seitenladen) wenn vom Start ausgewählt). Da es sich erinnert, welches Radio zuletzt ausgewählt wurde, wählt es nicht standardmäßig das erste Radio beim erneuten Laden der Seite aus. –

+0

Die zweite Gruppe von Radios ('Squat', 'Benchpress' und 'Deadlift') zeigt und verbirgt verschiedene Dropdowns, und diese werden beim Laden der Seite korrekt geladen/versteckt/angezeigt, also würde ich es gerne für die erste Gruppe von Radios tun das gleiche (vom Start korrekt laden wird sagen):/ –

Verwandte Themen