在我的模型中,我有两个布尔属性,Approved和Rejected。我希望它们作为单选按钮或MVC视图上的复选框,但一次只想选择一个。MVC中的两个复选框,但一次只允许一个复选框
目前我的看法是这样的:
<div class="form-group">
@Html.LabelFor(model => model.Approved, htmlAttributes: new {@class = "control-label col-md-2"})
<div class="col-md-2">
<div class="checkbox">
@Html.EditorFor(model => model.Approved, new { onclick="SingleCheckbox(this)" })
@Html.ValidationMessageFor(model => model.Approved, "", new {@class = "text-danger"})
</div>
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Rejected, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-2">
<div class="checkbox">
@Html.EditorFor(model => model.Rejected, new { onclick="SingleCheckbox(this)" })
@Html.ValidationMessageFor(model => model.Rejected, "", new { @class = "text-danger" })
</div>
</div>
</div>
和JavaScript看起来像这样:
SingleCheckbox = function(rb) {
debugger;
var id = rb.id, uncheck;
if (id == 'Approved') {
uncheck = document.getElementById('Rejected');
} else {
uncheck = document.getElementById('Approved');
}
};
但是,当我检查的元素,它甚至没有onclick事件。
我已更新我的代码以反映您的建议(请参阅上文),但仍然存在相同的问题。问题是,当我检查元素复选框输入没有一个onclick事件。
这里呈现的HTML:
<div class="form-group">
<label class="control-label col-md-2" for="Approved">Approved</label>
<div class="col-md-2">
<div class="checkbox">
<input class="check-box" id="Approved" name="Approved" type="checkbox" value="true"><input name="Approved" type="hidden" value="false">
<span class="field-validation-valid text-danger" data-valmsg-for="Approved" data-valmsg-replace="true"></span>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="Rejected">Rejected</label>
<div class="col-md-2">
<div class="checkbox">
<input class="check-box" id="Rejected" name="Rejected" type="checkbox" value="true"><input name="Rejected" type="hidden" value="false">
<span class="field-validation-valid text-danger" data-valmsg-for="Rejected" data-valmsg-replace="true"></span>
</div>
</div>
</div>
这是您的原始问题的附注,但我认为如果您使用单选按钮,则可以解决您的问题并获得更好的用户体验。复选框意味着允许多个选择(即它们通常包含诸如_“检查所有适用的”的短语_)。另一方面,单选按钮是专门为***一次且只能选择一个***选项而设计的...... – War10ck
您可以显示使用2个单独bool的单选按钮的示例吗? –
如果这两个值是互斥的,那么你有设计问题。你应该拥有一个单独的属性(比如说)'状态'('string'或'enum')并使用单选按钮并避免不必要的脚本(并且需要在服务器上再次重复验证) –