我尝试根据下拉列表的值将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的值如何。
答案 0 :(得分:1)
您可以将value
属性与javascript
对象一起使用,而不是jQuery对象。由于$("#ddlBookType")
为您提供了jQuery对象,可以使用索引器将其转换为javascript DOM
对象。或者,您可以将val()与jQuery对象一起使用,而不是使用值。
更改
if ($("#ddlBookType").value == 'B')
到的
if ($("#ddlBookType")[0].value == 'B')
或者
if ($("#ddlBookType").val() == 'B')