0

我正在尝试更改有关是否选中复选框的 TextBoxFor 只读属性。我已阅读其他帖子,但答案似乎对我不起作用。我请任何人指出我在下面的代码中错过的内容。

<div class="editor-label">
                @Html.LabelFor(m => m.AddFitbit)
            </div>
            <div class="editor-field" id="checkBox">
                @Html.CheckBoxFor(m => m.AddFitbit)
            </div>
            <div class="editor-label">
                @Html.LabelFor(m => m.Mail)
            </div>
            <div class="editor-field" id="userMail">
                @Html.TextBoxFor(m => m.Mail)
            </div>
            <br />
            <input class="submit" type="submit" value="@LangResources.Create" />
            <button onclick="history.back(); return false;">@LangResources.BtnCancel</button>
        </div>
    </article>
}

@Html.ValidationSummary(true, LangResources.ScreenAddGeneralError)

<script type="text/javascript">
    $(function() {
        $('#checkBox').change(function () {
            if ($(this).is(':checked')) {
                $('#userMail').attr('readonly');
            } else {
                $('#userMail').removeAttr('readonly');
            }
        });
    });
</script>
4

1 回答 1

3

您的目标是div包含您的复选框,它确实不会触发任何change事件。像这样定位里面的复选框div

$(function() {
    $('#checkBox input[type="checkbox"]').change(function () {
        $('#userMail input[type="text"]').prop('readonly', $(this).is(':checked'));
    });
});

prop此外,我通过使用而不是更正和简化了您的代码attr。属性应该表示给定属性的初始值,因此最好改为更改相应的元素属性。

有关使用的详细信息prop,请参阅文档(基于@Liam 的评论)。

于 2016-11-08T11:35:32.043 回答