【发布时间】:2021-07-01 13:04:45
【问题描述】:
我试图在我的 mvc 应用程序中隐藏一些 html 表单。我正在使用 jQuery 来尝试隐藏我的元素。
这是我的剃须刀页面
<div id="Types" class="form-group">
<label asp-for="Type" class="control-label"></label>
<select asp-for="Type" class="form-control">
<option>Select a Type</option>
<option value="Book">Book</option>
<option value="AudioBook">AudioBook</option>
<option value="ReferenceBook">Reference Book</option>
<option value="DVD">DVD</option>
</select>
<span asp-validation-for="Type" class="text-danger"></span>
</div><div id="ThePages" class="form-group">
<label asp-for="Pages" class="control-label"></label>
<input asp-for="Pages" class="form-control" />
<span asp-validation-for="Pages" class="text-danger"></span>
</div>
<div id="TheRunTime" class="form-group">
<label asp-for="RunTimeMinutes" class="control-label"></label>
<input asp-for="RunTimeMinutes" class="form-control">
<span asp-validation-for="RunTimeMinutes" class="text-danger"></span>
</div>
<div id="Borrowable" class="form-group form-check">
<label class="form-check-label">
<input class="form-check-input" asp-for="IsBorrowable" /> @Html.DisplayNameFor(model => model.IsBorrowable)
</label>
</div>
<div id="BorrowedBy" class="form-group">
<label asp-for="Borrower" class="control-label"></label>
<input asp-for="Borrower" class="form-control" />
<span asp-validation-for="Borrower" class="text-danger"></span>
</div>
<div id="TheDate" class="form-group">
<label asp-for="Date" class="control-label"></label>
<input asp-for="Date" class="form-control" />
<span asp-validation-for="Date" class="text-danger"></span>
</div>
如您所见,我在元素上使用了 ID。 这是jQuery代码
function hideOnLoad() {
$("#ThePages").hide();
$("#TheRunTime").hide();
$("#Borrowable").hide();
$("#BorrowedBy").hide();
$("#TheDate").hide();
}
$(document).ready(function () {
hideOnLoad();
$("#Types").change(function () {
var value = $(this).val();
if (value = "Book") {
$("#ThePages").show();
$("#TheRunTime").show();
$("#Borrowable").show();
$("#BorrowedBy").show();
$("#TheDate").show();
}
else if (value == "AudioBook") {
$("#ThePages").hide();
$("#TheRunTime").hide();
$("#Borrowable").hide();
$("#BorrowedBy").show();
$("#TheDate").show();
}
else if (value == "ReferenceBook") {
$("#ThePages").show();
$("#TheRunTime").hide();
$("#Borrowable").hide();
$("#BorrowedBy").hide();
$("#TheDate").hide();
}
else if (value == "DVD") {
$("#ThePages").hide();
$("#TheRunTime").show();
$("#Borrowable").show();
$("#BorrowedBy").show();
$("#TheDate").show();
}
else {
hideOnLoad();
}
});
});
在第一个函数 loadOnDisplay() 中,我默认删除所有我不想显示的元素。 这里的想法是当用户选择例如“书”时,只有与书相关的元素对用户可见。 DVD 也是如此。
第一个功能有效,但是当我尝试选择一本书或 dvd 时,它会显示一些元素,但不是全部。当我尝试改变我的选择时,什么都没有发生。
我在这里错过了什么?
【问题讨论】:
-
错字。您正在使用
=进行比较,而不是==。因此,该条件将始终为真。 -
您好,感谢您的意见!我改变了这个,但现在选择一个选项时什么都没有发生。
标签: jquery asp.net-mvc asp.net-core razor-pages