0

ドロップダウン リストの値に基づいて div の値を非表示または非表示に設定しようとしていますが、フォームが検証エラーで再表示されると、投稿後に機能しません。ASP.NET MVC を使用しています>

ddlBookType という名前のドロップダウン リストがあり、空白にすることも、値を「A」または「B」にすることもできます。

@Html.DropDownListFor(
x => x.Book.Type,
Model.Types, "", new { @style = "width:50%", @id = "ddlBookType" })<br />
@Html.ValidationMessageFor(model => model.ICLA.Type)

上記のドロップダウン リストが B に設定されている場合にのみ表示する BookDetails という div があります。

<div id="BookDetails">
    // Only show if ddlBookType is "B"
</div>

ddlBookType の値に基づいて上記の DIV の可視性を切り替える小さな関数があります。

$("#ddlBookType").change(function () {
    $('#BookDetails').toggle(this.value == 'B');
});

これはうまく機能しますが、フォームが投稿された場​​合、ddlBookType の値に基づいて BookDetails div を表示/非表示にする必要があります。私はもう試した:

$(document).ready(function () {
    if ($("#ddlBookType").value == 'B') {
        $('#BookDetails').show()
    }
    else {
        $('#BookDetails').hide()

    }

})

しかし、これは常に false と評価されるようです。したがって、ユーザーが初めてフォームにアクセスすると、div は非表示 (良好) ですが、フォームが投稿され、検証エラーで再表示されると、ddlBookType の値に関係なく、div も非表示になります。

4

1 に答える 1

1

jQueryオブジェクトではなく、オブジェクトでvalueプロパティを使用できます。javascriptインデクサーを使用$("#ddlBookType")してjavascriptオブジェクトに変換できるjQueryオブジェクトを提供しますDOM。または、値を使用する代わりに、jQuery オブジェクトで val() を使用できます。

変化する

if ($("#ddlBookType").value == 'B') 

if ($("#ddlBookType")[0].value == 'B') 

または

if ($("#ddlBookType").val() == 'B') 
于 2013-09-15T05:36:56.800 に答える