1

私は MVC4/C# でモバイル Web サイトを開発しており、ウィザードを使用してデータ入力を行っています ( http://afana.me/post/create-wizard-in-aspnet-mvc-3.aspx ) 私はjQuery v1.8 と jQuery mobile 1.3.1 も使用しています。

何らかの理由で、最初にステップ 1 を表示するときに hide() に「戻る」ボタンを取得できず、ステップ 2 に進み、ステップ 1 に戻ると、次のコードを使用して戻るボタンが非表示になります:

$("#back-step").closest('.ui-btn').hide();

$document.ready (またはイベント ハンドラーを設定する前) でまったく同じコードを使用すると、ページ/ステップの最初のビューでボタンが非表示になりません。

スクリプト コードは別のファイルからロードされ、スクリプト コードのロードは cshtml ファイルの下部で行われます。

<script src="~/Scripts/Custom/Wizard.js"></script>

これを機能させるために何をしなければならないのか疑問に思っています。ここで検索し、 $(#back-step").hide$ などのさまざまなことを何時間も試しましたが、正しく機能させることはできませんコードが「ヒット」しているかどうかを確認するために、以下のコードにいくつかの「アラート」を入れましたが、ボタンが非表示にならない理由はわかりません。

ここの誰かが助けてくれることを願っています。以下に JavaScript を含めました。

ウィザードの JavaScript コードは次のとおりです。

$(function () {

$(".wizard-step:first").show();             // show first step

$("#back-step").closest('.ui-btn').hide();
alert('hide! first');

// attach nextStep button handler       
$("#next-step").click(function () {
    var $step = $(".wizard-step:visible"); // get current step

    var validator = $("form").validate(); // obtain validator
    var anyError = false;
    $step.find("input").each(function () {
        if (!validator.element(this)) { // validate every input element inside this step
            anyError = true;
        }

    });

    if (anyError)
        return false; // exit if any error found

    if ($step.next().hasClass("confirm")) { // is it confirmation?

        try {
            $("form").submit();
        }
        catch (e) {
            alert(e.name + ": " + e.message + " " + e.description);
        }
    }

    if ($step.next().hasClass("wizard-step")) { // is there any next step?
        $step.hide().next().fadeIn();  // show it and hide current step
        $("#back-step").closest('.ui-btn').show();
    }
    else { // this is last step, submit form
        $("form").submit();
    }
});


// attach backStep button handler
// hide on first step
$("#back-step").click(function () {
    var $step = $(".wizard-step:visible"); // get current step
    if ($step.prev().hasClass("wizard-step")) { // is there any previous step?
        $step.hide().prev().fadeIn();  // show it and hide current step

        // disable backstep button?
        if (!$step.prev().prev().hasClass("wizard-step")) { // $step.prev().prev() == $(".wizard-step:first")) {
            $("#back-step").closest('.ui-btn').hide();
        }
    }
    else {
        $("#back-step").closest('.ui-btn').hide();
    }
});
});

$(document).ready(function () {
    $("#back-step").closest('.ui-btn').hide();
    alert('hide! in ready');
});
4

0 に答える 0