1

私はこれを数回使用しましたが、通常はうまく機能します。ただし、私の最近の使用法では、非表示の div はうまくスライドしますが、元に戻りません。「はい」ラジオボタンをクリックするとスライドダウンし、「いいえ」をクリックすると元に戻るはずです。このとき、クリックしたラジオボタンに関係なく下にスライドし、上にスライドしません。常に「はい」の値が表示されると思います..

html は次のとおりです。

    <div id="AliasSectionTop">
        Have you ever been known by another name (maiden name, name change, etc)?
        <input type="radio" value="Yes" name="aliasName" />Yes
        <input type="radio" value="No" name="aliasName" />No
    </div>

    <div id="AliasSectionBottom" class="hidden">

        @for (var i = 0; i < 5; i++)
        {
            <div class="formGroup">
                <div class="editor-label">
                    @Html.Label("First Name")
                </div>
                <div class="editor-field">
                    @Html.TextBoxFor(model => model.PersonAliasModel[i].FirstNameAlias)
                </div>
            </div>

            <div class="formGroup">
                <div class="editor-label">
                    @Html.Label("Last Name")
                </div>
                <div class="editor-field">
                    @Html.TextBoxFor(model => model.PersonAliasModel[i].LastNameAlias)
                </div>
            </div>
        }

    </div>

ここにjqueryがあります:

    // SHow full form once the waiver checkboix is checked.
    $(document).ready(function () {
        $("input[name=aliasName]").click(function () {
            if ($("input[name=aliasName]").val() == "Yes") {
                $("#AliasSectionBottom").slideDown(800);
            } else {
                $("#AliasSectionBottom").slideUp("fast");
            }
        });
    });
4

1 に答える 1

1

問題はここにあります:

if ($("input[name=aliasName]").val() == "Yes")

コレクションには 2 つの要素があります$("input[name='aliasName']")。jQuery は 1 つの値しか返すことができないため、常にコレクションの最初の値になるため、yourifは常に true になります。

セレクターを使用してセレクターをフィルタリングできます:checked

if ($("input[name='aliasName']:checked").val() == "Yes")
于 2012-12-17T23:47:52.830 に答える