我正在使用.net MVC,并有一个模态弹出窗口,用于将数据输入到一个calllog(fullbackar.js)。填充下拉列表(用于可预订办公桌等)的模型还根据用户自动勾选某些复选框。如果使用了“预订对象”选项卡,我希望勾选框取消勾选。我已经尝试了所有我能想到的JavaScript和JQuery(attr,prop和瓦尔)。值/属性确实发生了变化,但复选框本身保持勾选。
模态的代码(有些可能会丢失,因为我已经删除了不相关的部分):
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Create Booking</h4>
</div>
<div class="modal-body">
<p>Booking Details.</p>
@using (Html.BeginForm("CreateEvent", "Calendar", FormMethod.Post, new { id = "Create" }))
{
<div class="form-group">
@Html.LabelFor(model => model.BookedFor, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.BookedFor, Model.BookedForList.Select(x => new SelectListItem { Text = x.FullName, Value = x.FullName }), new { @class = "form-control chosen-select", @id = "BookList" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.FirstAider, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.FirstAider, new { @class = "form-control", @id = "Aid" })
</div>
</div>
</div>
</div>
@Html.HiddenFor(c => c.ID)*@
@Html.TextBoxFor(model => model.ID, new { @class = "form-control", @style = "display: none;", @id = "CID", @readonly = "readonly" })
@Html.AntiForgeryToken()
}
</div>
<br />
<br />
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="submit" id="CreateSubmit" class="btn btn-primary">Save</button>
</div>
Aid的值是从模型中设置的,是一个布尔值。
如果勾选了复选框(因此value为true),我希望当用户更改“Booked For”选项卡中的值时,不选中该复选框。
我已经运行了这个jQuery/JavaScript,我认为它应该改变值-它确实改变了属性的值,但复选框仍然选中。
$('#BookList').change(function () {
var at = $("#Aid").attr("checked");
var prop = $("#Aid").prop("checked");
alert("attr: " + at + ", prop: " + prop);
$("#Aid").prop("checked", false).change()
$("#Aid").removeAttr("checked");
var atb = $("#Aid").attr("checked");
var propb = $("#Aid").prop("checked");
alert("attr: " + atb + ", prop: " + propb);
});
当模型选中该复选框时,第一个警报显示:
- attr:checked,prop:真 *
第二个警报显示:
- attr:undefined,prop:不正确 *
如果模型未勾选该复选框,则两个警报均显示:
- attr:undefined,prop:不正确 *
因此,值会更改以匹配未选中的框,但框本身保持选中状态。我缺少什么命令/属性?
1条答案
按热度按时间gudnpqoy1#
我已经解决了(某种程度上)。问题似乎是jQuery不喜欢与Razor使用EditorFor创建的复选框对话-如果我将其更改为CheckBoxFor,我现在可以更新复选框!
由于某种原因,复选框的大小增加了三倍,但这是另一个问题。