根据下拉列表的值设置POST后显示/隐藏的div值

时间:2013-09-15 05:35:31

标签: jquery asp.net-mvc

我尝试根据下拉列表的值将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)

我有一个名为BookDetails的div,我只想显示上面的下拉列表是否设置为B:

<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()

    }

})

但这似乎总是评估为假。因此,当我的用户第一次进入表单时,div被隐藏(好),但是当表单被发布并重新显示验证错误时,div也会被隐藏,无论ddlBookType的值如何。

1 个答案:

答案 0 :(得分:1)

您可以将value属性与javascript对象一起使用,而不是jQuery对象。由于$("#ddlBookType")为您提供了jQuery对象,可以使用索引器将其转换为javascript DOM对象。或者,您可以将val()与jQuery对象一起使用,而不是使用值。

更改

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

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

或者

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