jQuery .show()方法无法在.click函数内部工作

时间:2013-04-30 22:31:01

标签: c# jquery asp.net-mvc asp.net-mvc-3 razor

下面是根据是否选中框来使文本框显示/消失的代码(当页面加载时文本框被隐藏)。所有警报都正常启动,但我无法使.show()功能复选框工作。

这是jQuery。这来自document.ready函数内部。你可以从我已经评论过的其他两种方法中看到我尝试过的(两种方法都没有用)。

    $('#OverrideRegionInd').click(function () {
        alert($(this).is(':checked'));
        if ($(this).is(':checked')) {
            alert("inside if");
            $('#Region').show();
            //$('#Region').css("display", "inline");
            // $('#Region').toggle();
            $('#territoryName').html("");
            $('#Region').val("");

        } else {
            alert("inside else");
            $('#Region').hide();
            //$('#Region').css("display", "none");
            // $('#Region').toggle();
        }
    });

以下是视图中的代码

    <div class="M-editor-label">
        @Html.LabelFor(model => model.Region)
    </div>
    <div class="M-editor-field" id="territoryName">
        @Html.TextBoxFor(model => model.Region, new { style = "display: none;" })
        @Html.ValidationMessageFor(model => model.Region)
    </div>

以下是针对此特定<div>

集呈现页面的HTML
    <div class="M-editor-label">
        <label for="Region">Territory</label>
    </div>
    <div class="M-editor-field" id="territoryName">
        <input id="Region" name="Region" style="display: none;" type="text" value="" />
        <span class="field-validation-valid" data-valmsg-for="Region" data-valmsg-replace="true"></span>
    </div>

1 个答案:

答案 0 :(得分:1)

那是因为你正在设置:

$('#territoryName').html("");

这是#Region的父级,您实际上删除了该行的#Region元素。拿出来,它会工作正常。

DEMO