2017-09-02 15 views
2

jquery-stepsを使用して2つまたは3つのステップフォームを作成しています。JQueryのステップ:ユーザーの入力に基づいて追加のステップを表示/非表示にする方法

私が達成しようとしていることの1つは、チェックボックスの値に基づいて新しい最終ステップとなるステップ2(通常は最終ステップ)の後に追加のステップを表示/非表示することです。チェックされている場合は、手順3が表示されます。そうでない場合は、手順2の後にフォームが送信されます。ただし、開始する場所がわかりません。

これは私がこれまでにjavascriptの部分にしてきたものです。

 $("#wizard").steps({ 
 
     headerTag: "h1", 
 
     bodyTag: "fieldset", 
 
     //transitionEffect: "slideLeft", 
 
     onStepChanging: function(event, currentIndex, newIndex) 
 
     { 
 
      //only apply to first step 
 
       if (currentIndex === 0 && ($('#opt1').attr('checked'))) 
 
       { 
 
         $("#wizard").steps("insert", 1, { 
 
         title: "Step Title", 
 
         content: "<p>Step Body</p>" 
 
         }); 
 
       } 
 
     return true; 
 

 
     }, 
 
     onFinished: function (event, currentIndex) 
 
     { 
 
      var form = $(this); 
 
      form.submit(); 
 

 
     }, 
 

 

 

 
    });

完全な形式は、この更新されたスクリプトはあなたを助けJSFiddle

+0

jsfiddleを再確認してください、そこjavascriptのエラーがたくさんある...あなたは私の下に更新されたスクリプトを確認することができます@Codingmedic – Dekel

+0

。 –

答えて

1

希望で提供されています。指定したJSFiddleに基づいて、</form>タグの直後に次のコードを貼り付けます。

<script> 
var currentStep = 0; //store current step number 

    $("#wizard").steps({ 
    headerTag: "h1", 
    bodyTag: "fieldset", 
    //transitionEffect: "slideLeft", 

    onStepChanging: function(event, currentIndex, newIndex) 
    { 
     if (newIndex < currentIndex) return true; //Previous button click - allow 
     else if (currentIndex === 1 && ($('#opt1').is(':checked'))) return true; //If in second step and checkbox checked then proceed to Step 3 
     else if (currentIndex === 1 && (!$('#opt1').is(':checked'))) return false; //If in second step and checkbox checked then stop at Step 2 

     return true; 
    }, 

    onStepChanged: function (event, currentIndex, newIndex) { 
     currentStep = currentIndex; //Set current step number in currentStep variable 

     if (currentIndex === 1 && (!$('#opt1').is(':checked'))) //If in second step and checkbox not checked then display Finish button and hide Next button 
     { 
     $('a[href="#finish"]').parent().attr("style", "display: block;") 
     $('a[href="#next"]').parent().attr("style", "display: none;"); 
     } 
    }, 

    onFinished: function (event, currentIndex) 
    { 
     var form = $(this); 
     form.submit(); 
    }, 
    }); 

    $("#wizard-t-2").hide(); //Hide Step 3 by default 

    //Event handler for checkbox 1 
    function ShowHideDiv1(opt1) { 
    var opt1more = document.getElementById("opt1more"); 
    opt1more.style.display = opt1.checked ? "block" : "none"; 

    if (opt1.checked) 
    { 
     $("#wizard-t-2").show(); 

     if (currentStep == 1) //If in second step and checkbox checked then display Next button and hide Finish button 
     { 
     $('a[href="#finish"]').parent().attr("style", "display: none;") 
     $('a[href="#next"]').parent().attr("style", "display: block;"); 
     } 
    } 
    else 
    { 
     $("#wizard-t-2").hide(); 

     if (currentStep == 1) //If in second step and checkbox not checked then display Finish button and hide Next button 
     { 
     $('a[href="#finish"]').parent().attr("style", "display: block;") 
     $('a[href="#next"]').parent().attr("style", "display: none;"); 
     } 
    } 
    } 

    function ShowHideDiv2(opt2) { 
    var opt2more = document.getElementById("opt2more"); 
    opt2more.style.display = opt2.checked ? "block" : "none"; 
    } 

    function showVal(newVal){ 
    document.getElementById("valBox").innerHTML=newVal; 
    } 
</script> 
+0

それは完璧に動作します!ありがとうございました! – Codingmedic

関連する問題