1

私には簡単な問題があります。多くの例を見てきましたが、正しいコードに指を置くことはできません。問題: ドロップダウン リストから [その他] が選択されている場合にのみ、テキスト入力フィールドを表示する必要があります。

私のJavaScript:

@{
    ViewBag.Title = "Create Client";
    var showGenderDescription = false;
    var showSettingDescription = false;
}

<script src="~/Scripts/jquery-2.0.3.js"></script>
<script>
    $(function () {
        $('#GenderId').change(function () {
            if ($("#GenderId").val() == 3) {
            showGenderDescription = true;

            }
        });

        $("#SettingId").change(function () {
            if ($("#SettingId").val() == 1) {
                showGenderDescription = true;
            }
        });

    });
</script>

私のビューコード:

@using (Html.BeginForm())
{
    <div class="editor-label">
        @Html.LabelFor(model => model.GenderId, "Gender")
    </div>
    <div class="editor-field">
        @Html.DropDownList("GenderId", (SelectList)ViewBag.GenderId, "--Select One--", new { id = "GenderId"})
        @Html.ValidationMessageFor(model => model.GenderId)
    </div>

    @if(showGenderDescription)
    {
        <div class="editor-label">
            @Html.LabelFor(model => model.GenderDescription)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.GenderDescription)
            @Html.ValidationMessageFor(model => model.GenderDescription)
        </div>
    }
}

ドロップダウンリストはコントローラーへのポストバックで正しく機能しますが、説明入力ボックスを表示したいと思います。このタイプの動作を複製するものは何も見たことがありません(とにかく私の検索ではありません)。いつものように、助けていただければ幸いです!

4

2 に答える 2

2

設定した方法showGenderDescriptionでは、一度だけチェックされます。それを変更にバインドするには、クラス (または同様のもの) を使用して「その他」の入力フィールドをラップします。

<div class="gender-description">
    <div class="editor-label">
        @Html.LabelFor(model => model.GenderDescription)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.GenderDescription)
        @Html.ValidationMessageFor(model => model.GenderDescription)
    </div>
</div>

change次に、 JS 関数内で表示/非表示にすることができます。

if ($("#GenderId").val() == 3) {
    $(".gender-description").show();
} else {
    $(".gender-description").hide();
}
于 2013-08-18T02:40:15.477 に答える