我是ASP.Net开发,MVC 5和几乎所有Windows的新手,所以我确定我做错了什么。我在这里寻找答案并找到了类似的问题,但我显然做错了什么......可能是因为答案假定我对工作环境有了更多的了解......
选择框开始的时间是"是"我更喜欢" No",无论如何显示字段。
我怀疑我的javascript位置错误和/或错过了重要的内容。
我有一些代码:
<p>
Are you a Licensee?
@Html.DropDownListFor(x => x.Licensee, new[] {
new SelectListItem() {Text="Yes", Value = bool.TrueString},
new SelectListItem() {Text="No", Value = bool.TrueString} }, new {id = "Licensee"})
@section scripts{ <script type="text/javascript">
$(function ()
{
$('#Licensee').change(function ()
{
var value = $(this).val();
if (value == true)
{
$('#LicName').show();
$('#LicUrl').show();
$('#LicRole').show();
}
else
{
$('#LicName').hide();
$('#LicUrl').hide();
$('#LicRole').hide();
}
});
});
</script> }
<p>Your Licensee Name: @Html.TextBoxFor(x => x.LicenseeName, new { id = "LicName" })</p>
<p>Your Licensee Url: @Html.TextBoxFor(x => x.LicenseURL, new { id = "LicUrl" })</p>
<p>your LIcensee Role: @Html.TextBoxFor(x => x.LicenseRole, new { id = "LicRole" })</p>
</p>
答案 0 :(得分:0)
更改
@Html.DropDownListFor(x => x.Licensee, new[] {
new SelectListItem() {Text="Yes", Value = bool.TrueString},
new SelectListItem() {Text="No", Value = bool.TrueString} }, new {id = "Licensee"})
要
@Html.DropDownListFor(x => x.Licensee, new[] {
new SelectListItem() {Text="No", Value = bool.TrueString} }, new {id = "Licensee"}),
new SelectListItem() {Text="Yes", Value = bool.TrueString}
这将有助于显示值No first。
此外,它们始终在JavaScript中显示的原因是因为您为每个值传递了bool.TrueString
(是和否)。您需要使用bool.FalseString
作为选项&#34;否&#34;。
例如:
new SelectListItem() {Text="No", Value = bool.FalseString} }, new {id = "Licensee"}),
答案 1 :(得分:0)
好的,我使用此处提示中的复选框来计算出来,特别是此页面Show/hide div if checkbox selected
我把它放在视图页面的标题部分:
function showMe(box, name) {
var chboxs = document.getElementsByName(name);
var vis = "none";
for (var i = 0; i < chboxs.length; i++) {
if (chboxs[i].checked) {
vis = "block";
break;
}
}
document.getElementById(box).style.display = vis;
}
这是代码片段:
<p>
Are you a Licensee?
@Html.CheckBoxFor(x => x.Licensee, new { onclick="showMe('LicenseeYes', 'Licensee')" } )
<div id="LicenseeYes", style="display:none">
<p>Your Licensee Name: @Html.TextBoxFor(x => x.LicenseeName)</p>
<p>Your Licensee Url: @Html.TextBoxFor(x => x.LicenseURL)</p>
<p>your LIcensee Role: @Html.TextBoxFor(x => x.LicenseRole)</p>
</div>
</p>
谢谢大家的帮助,它让我走上了正确的道路,它给了我正确搜索的正确起点。
我还将函数更改为因为循环不是必需的。如果您有多个要使div部分显示的复选框,则另一个将起作用:
function showMe(box, name) {
var chkbox = document.getElementById(name);
var vis = "none";
if (chkbox.checked) {
vis = "block"
}
document.getElementById(box).style.display = vis;
}