ASP.NET表单显示表单字段基于另一个字段中的部分

时间:2015-07-04 12:55:32

标签: javascript c# asp.net asp.net-mvc

我是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>

2 个答案:

答案 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;
}