谁能帮助我。 将数据加载到mvc视图时,我将加载复选框的值,但如果为true,我将需要禁用2个文本框字段。
代码是我的for循环的一部分
@Html.TextBoxFor(m => m.Items[i].StartIntervalTime, "{0:HH:mm}", new {
Value = Model.Items[i].Available ? "" : Model.Items[i].StartIntervalTime.ToString("HH:mm"),
id = "startTime" + i
})
<span>untill</span>
@Html.TextBoxFor(m => m.Items[i].EndIntervalTime, "{0:HH:mm}", new {
Value = Model.Items[i].Available ? "" : Model.Items[i].EndIntervalTime.ToString("HH:mm"),
id = "endTime" + i
})
@Html.CheckBoxFor(m => m.Items[i].Available, new { id = i, @class = "closedallday" })
我已尝试在textbox标签中使用“禁用”,就像我使用“value”一样,但即使没有值,禁用也会始终禁用文本框。所以..
Disabled = Model.Items[i].Available ? "disabled" : "",
我需要一个真正有效的解决方案。
谢谢Dinand
答案 0 :(得分:2)
你可以做这样的事情:
//检查值是否为true,禁用文本框,否则正常绘制:
if(m.Items[i].Availabl == true)
{
@Html.TextBoxFor(m => m.Items[i].StartIntervalTime, "{0:HH:mm}"
, new {ANYTHINK ELSE, disabled="disabled" })
}
else
{
@Html.TextBoxFor(m => m.Items[i].StartIntervalTime, "{0:HH:mm}"
, new {ANYTHINK ELSE })
}
答案 1 :(得分:1)
我会使用jQuery来捕捉复选框中的更改,然后更改文本框。这是一个有效的jsfiddle
<强>的jQuery 强>
$('#checkbox').on("change", function () {
if ($(this).is(":checked")) {
textbox.addClass('disabled');
textbox.val("");
textbox.prop('disabled',true);
}else {
textbox.removeClass('disabled');
textbox.prop('disabled',false);
}
}
<强> CSS 强>
.disabled {
background-color:lightgray;
}
答案 2 :(得分:0)
只需使用jquery
即可<script>
jQuery(document).ready(function() {
if ($("input:checkbox").is(":checked"))
{
$("input:text").prop("readonly", "readonly");
}
});
</script>