2016-12-01 13 views
0

いくつかのラジオボタンといくつかのドロップダウンメニューがありますが、どのラジオボタンが選択されているかによって表示/非表示になりますが、私の最初の3つのラジオボタンはJSコードを直接有効にしません!Javascript load directly

https://jsfiddle.net/spfrh9h8/

Imが言おうと何のビジュアルを取得するには、このバイオリンをチェックしてください。 「プライマリ」ラジオが選択されている間は、プルダウンしなくてもドロップダウンは表示されませんが、選択されてページがリロードされると(まだ選択されています)、ドロップダウンが再び表示されます't。私はこれが簡単な修正だと確信していますが、私はそれを理解できませんでした。

$(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

ページが '$(document).ready(function(){$( 'input [type = radio]:first-child')を読み込むと、最初のラジオのクリックを引き起こす可能性があります。 );}); '。 –

+0

これはうまくいきましたが、「Primary」がクリックされたときに消えるドロップダウンは、「Secondary」をクリックしても消えてはならず、localstorage経由でクリックされたものを覚えているので、 'Secondary'リロードすると、ボックスは表示されますが、リロード後にプライマリがトリガーされるため、ボックスは非表示になります。しかし、私は最初の3つのラジオが最後にリロード時に選択されたものを覚えている必要はありませんが、私はこのjavascriptを書いていないので、それを非常に理解していないので、最後の3つのラジオを作りながら、続けて –

+0

...最後の3つのラジオが最後に選択した値を覚えている間に!正しいものが表示され/隠されている限り、ページがリロードされるたびにプライマリが選択されても問題ありません。どんな助けもありがとう! –

答えて

1

の開始の2つの非表示を追加します。この機能の中で、あなたが望むラジオボタンをトリガーすることができます。

例:ドキュメントの最初の無線が常に読み込まれます。

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

例:ユーザによって最後に選択されたラジオを(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'); 
    } 
    }); 
}); 

この最後のブロックが機能するためには、あなたのマークアップにIDsを逃しがあります。ここで

:ここ

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

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

そして、ここで:

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

このworking fiddleを参照してください。

+0

それは私の友人、絶対に素晴らしいです!大変感謝しています!ありがとう –

+0

うれしい私は助けになることができます! –

0

だけであなたは、ドキュメントのロード時に起動されます機能を追加することができる機能

$(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

さて、そのような半分の解決!'Secondary'ラジオが最初から選択されている場合は、 'Assistance'が選択されているときだけでなく、表示されるべきです(ただし、 'Assistance'の場合は、ラジオの2番目のグループが消えてしまいます。開始から選択された場合)。最後に選択されたラジオが記憶されているため、デフォルトではページのリロード時に最初のラジオが選択されません。 –

+0

第2グループの無線機( 'Squat'、 'Benchpress'、 'Deadlift')は、異なるドロップダウンを表示したり隠したりしており、ページの読み込み時に正しくロード/非表示/表示されるので、同じ(最初から正確に読み込まれます):/ –