Javascript ASP.NET表单根据另一个字段中的节显示表单字段
我对ASP.Net开发、MVC5以及几乎所有Windows操作系统都是新手,所以我肯定我做错了什么。我在这里到处寻找答案,发现了类似的问题,但我显然做错了什么…可能是因为这些答案假定我对我工作的环境有更多的了解 所选择的框以“是”开头,我更愿意选择“否”,并且不管怎样,字段都会显示出来 我怀疑javascript放错了位置和/或遗漏了一些重要内容 我有一些代码:Javascript ASP.NET表单根据另一个字段中的节显示表单字段,javascript,c#,asp.net,asp.net-mvc,Javascript,C#,Asp.net,Asp.net Mvc,我对ASP.Net开发、MVC5以及几乎所有Windows操作系统都是新手,所以我肯定我做错了什么。我在这里到处寻找答案,发现了类似的问题,但我显然做错了什么…可能是因为这些答案假定我对我工作的环境有更多的了解 所选择的框以“是”开头,我更愿意选择“否”,并且不管怎样,字段都会显示出来 我怀疑javascript放错了位置和/或遗漏了一些重要内容 我有一些代码: <p> Are you a Licensee? @Html.DropDownListFor(x => x.Licen
<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>
你是持牌人吗?
@Html.DropDownListFor(x=>x.许可证持有人,新[]{
新建SelectListItem(){Text=“Yes”,Value=bool.TrueString},
新建SelectListItem(){Text=“No”,Value=bool.TrueString}},新建{id=“被许可方”})
@节脚本{
$(函数()
{
$(“#被许可方”)。更改(功能()
{
var值=$(this.val();
如果(值==true)
{
$('#LicName').show();
$('#LicUrl').show();
$('#LicRole').show();
}
其他的
{
$('#LicName').hide();
$('#LicUrl').hide();
$('#LicRole').hide();
}
});
});
}
您的被许可人名称:@Html.TextBoxFor(x=>x.LicenseeName,new{id=“LicName”})
您的被许可人Url:@Html.TextBoxFor(x=>x.LicenseURL,新的{id=“LicUrl”})
您的被许可人角色:@Html.TextBoxFor(x=>x.LicenseRole,new{id=“LicRole”})
更改
@Html.DropDownListFor(x => x.Licensee, new[] {
new SelectListItem() {Text="Yes", Value = bool.TrueString},
new SelectListItem() {Text="No", Value = bool.TrueString} }, new {id = "Licensee"})
到
这将有助于先显示值No
它们总是显示在JavaScript中的另一个原因是,您正在为每个值(是和否)传入bool.TrueString
。对于选项“否”,您需要使用bool.FalseString
例如:
new SelectListItem() {Text="No", Value = bool.FalseString} }, new {id = "Licensee"}),
好的,我通过这里提示中的复选框,特别是这一页,找到了答案 我将其放在查看页面的标题部分:
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;
}
您的
两个值都是value=“true”
(在这两个值中使用value=bool.TrueString
)。但是你真的应该使用一个复选框,我可能应该添加,我的期望是表单将被呈现,当用户在下拉列表中更改选择时,其他字段将出现或消失…因此我可能完全是在错误的树上搜索…并且if(value==true)
无论如何都是真的-如果(value==“true”)@StephenMuecke-Doh!我将“否”改为假字符串…我考虑了复选框,这会使这更容易吗?@Html.CheckBoxFor(m=>m.license)
-then$('#license').change(function(){if($(this).is(':checked)){else{…})
但将所有3个文本框用
id包装在
中,并显示/隐藏divI修改为:@Html.DropDownListFor(x=>x.licensize,new[]{new SelectListItem(){Text=“No”,Value=bool.false string},new SelectListItem(){Text=“Yes”,Value=bool.TrueString},new{id=“licensize”})`
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>
function showMe(box, name) {
var chkbox = document.getElementById(name);
var vis = "none";
if (chkbox.checked) {
vis = "block"
}
document.getElementById(box).style.display = vis;
}