更改 TextBoxFor readonly 属性 是否选中复选框
Change an TextBoxFor readonly property on whether a checkbox is checked or not
我正在尝试更改 TextBoxFor readonly 属性 是否选中复选框。
我已经阅读了其他帖子,但答案似乎对我不起作用..
请任何人指出我在下面的代码中遗漏的内容。
<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>
您将包含您的复选框的 div
定位为目标,它确实不会触发任何 change
事件。像这样定位 div
内的复选框。
$(function() {
$('#checkBox input[type="checkbox"]').change(function () {
$('#userMail input[type="text"]').prop('readonly', $(this).is(':checked'));
});
});
此外,我使用 prop
而不是 attr
更正并简化了您的代码。属性应该表示给定 属性 的初始值,因此最好改为更改相应的元素 属性。
有关使用 prop
的详细信息,请参阅 the documentation(基于@Liam 的评论)。
我正在尝试更改 TextBoxFor readonly 属性 是否选中复选框。 我已经阅读了其他帖子,但答案似乎对我不起作用.. 请任何人指出我在下面的代码中遗漏的内容。
<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>
您将包含您的复选框的 div
定位为目标,它确实不会触发任何 change
事件。像这样定位 div
内的复选框。
$(function() {
$('#checkBox input[type="checkbox"]').change(function () {
$('#userMail input[type="text"]').prop('readonly', $(this).is(':checked'));
});
});
此外,我使用 prop
而不是 attr
更正并简化了您的代码。属性应该表示给定 属性 的初始值,因此最好改为更改相应的元素 属性。
有关使用 prop
的详细信息,请参阅 the documentation(基于@Liam 的评论)。