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)

我有一个名为 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 的值如何。

4

1 回答 1

1

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

改变

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

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

或者

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